メソッドのオーバーライド

// オーバーライド用関数
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

参考:

JavaScript で動的オーバーライド時にもとのメソッドを呼び出す方法 – Qiita

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です