在javascript中覆盖对象方法

时间:2016-02-20 11:55:26

标签: javascript prototype

我有一个带回调方法的对象,我应该扩展它。 对象是elementHandle,方法onCheckURLDone(result, data)在某处内部调用。我需要执行一些扩展代码并回调原始函数代码。 我试过这样的事情:

  var cachedCallback = elementHandle.onCheckURLDone;

  elementHandle.onCheckURLDone = (function(result, data){
    console.log("Some extended code...");

    return function(result, data) {
        return cachedCallback.apply(elementHandle, arguments);
    }
  });

但这里没有调用原始代码。怎么了?

1 个答案:

答案 0 :(得分:3)

试试这个:

var cachedCallback = elementHandle.onCheckURLDone;
elementHandle.onCheckURLDone = function (result, data) {
    console.log('Some extended code...');
    return cachedCallback.apply(elementHandle, arguments);
};

在返回的函数内部调用代码中的原始回调。所以,如果你想要它被执行,你必须这样称呼它:

elementHandle.onCheckURLDone(someResult, someDate)(someResult, someDate);

我想这不是你想要的。