(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();
}());