Edit in JSFiddle

(function(){
    var addChange = function(ob){
        ob.change = function(callback){
            if(callback){
                if(!this._change) this._change = [];
                this._change.push(callback);
            }else{
                if(!this._change) return;
                for(var i = 0; i < this._change.length; i++){
                    this._change[i].apply(this);                    
                };
            };
        };
    };
    
    var object = {};
    object.name = 'Foo';
    
    addChange(object);
    
    object.change(function(){
        console.log('変更されました!', this);
    });
    
    object.change();
    
    object.name = 'Bar';
    object.change();
}());

              

              

External resources loaded into this fiddle: