メソッドのオーバーライド
// オーバーライド用関数 function override(obj, methodName, newMethod) { obj[methodName] = newMethod.bind(obj, obj[methodName].bind(obj)); } // ここからは使い方(内容は記事と同じ) var anObject = { state: 'hoge', }; anObject.getState = function () { return this.state; }; // Function.bindでなるべく自然に呼べるようにしてみた override(anObject, 'getState', function (original) { return 'state : ' + original(); }); anObject.getState(); // => state : hoge
参考: