src/core/core.js
function() {
        var data, silent, recursive;
        if (typeof arguments[0] === "string") {
            data = this._set_create_object(arguments[0], arguments[1]);
            silent = !!arguments[2];
            recursive = arguments[3] || arguments[0].indexOf(".") > -1;
        } else {
            data = arguments[0];
            silent = !!arguments[1];
            recursive = !!arguments[2];
        }

        if (!silent) {
            this.trigger("Change", data);
        }

        if (recursive) {
            this._recursive_extend(data, this);
        } else {
            this.extend.call(this, data);
        }
        return this;
    }
function() {
        var data, silent, recursive;
        if (typeof arguments[0] === "string") {
            data = this._set_create_object(arguments[0], arguments[1]);
            silent = !!arguments[2];
            recursive = arguments[3] || arguments[0].indexOf(".") > -1;
        } else {
            data = arguments[0];
            silent = !!arguments[1];
            recursive = !!arguments[2];
        }

        if (!silent) {
            this.trigger("Change", data);
        }

        if (recursive) {
            this._recursive_extend(data, this);
        } else {
            this.extend.call(this, data);
        }
        return this;
    }
function ( ) { var data , silent , recursive ; if ( typeof arguments [ 0 ] === "string" ) { data = this . _set_create_object ( arguments [ 0 ] , arguments [ 1 ] ) ; silent = ! ! arguments [ 2 ] ; recursive = arguments [ 3 ] || arguments [ 0 ] . indexOf ( "." ) > - 1 ; } else { data = arguments [ 0 ] ; silent = ! ! arguments [ 1 ] ; recursive = ! ! arguments [ 2 ] ; } if ( ! silent ) { this . trigger ( "Change" , data ) ; } if ( recursive ) { this . _recursive_extend ( data , this ) ; } else { this . extend . call ( this , data ) ; } return this ; }
Internal setter method for attributes on the component. Called by `.attr`.

Options:

`silent`: If you want to prevent it from firing events.

`recursive`: If you pass in an object you could overwrite
sibling keys, this recursively merges instead of just
merging it. This is `false` by default, unless you are
using dot notation `name.first`.

example
~~~
person._attr_set('name', 'Foxxy', true);
person._attr_set('name', 'Foxxy');
person._attr_set({name: 'Foxxy'}, true);
person._attr_set({name: 'Foxxy'});
person._attr_set('name.first', 'Foxxy');
~~~
Internal setter method for attributes on the component . Called by . attr .