2016-02-20 129 views
1

我有一個回調方法的對象,我應該擴展。 對象是elementHandle和方法onCheckURLDone(result, data)在內部某處被調用。我需要執行一些擴展代碼並回調原始功能代碼。 我想是這樣的:在JavaScript中覆蓋對象方法

var cachedCallback = elementHandle.onCheckURLDone; 

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

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

但原代碼這裏不叫。怎麼了?

+0

嘗試去除'return function()...'行和與之對應的緊支撐? –

回答

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

我想這不是你想要的。

+0

「試試這個」答案通常不會有用,總是有*總是有用的東西來說,而不僅僅是傾銷代碼。 –

+0

這很容易,不知道爲什麼我寫了返回包裝:)謝謝 – Ockonal