メソッドのオーバーライド
// オーバーライド用関数
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
参考: