2017-09-26 137 views
0

如何在JavaScript中執行函數覆蓋?JavaScript中的函數覆蓋

我有以下代碼。

function helloWorld() { 
    return 'helloworld '; 
} 

var origHelloWorld = window.helloWorld; 

window.helloWorld = function() { 
    return 'helloworld2'; 
} 

alert(helloWorld); 

我想獲得像

helloworld helloworld2

輸出我該怎麼辦?

可能我描述的較少。其實我想打電話功能helloworld,我想共同輸出這兩個功能。

+0

呼叫從覆蓋原始和結果追加到返回值。 – DarthJDG

+0

也可以在警報的參數中調用重寫。 – Teemu

+1

你必須閱讀關於JavaScript的原型,它可能會幫助你。 – sjahan

回答

1

試試這個:

function helloWorld() { 
    return 'helloworld '; 
} 

var origHelloWorld = window.helloWorld; 

window.helloWorld = function() { 
    return origHelloWorld() + ' ' +'helloworld2'; 
} 

alert(helloWorld()); 
+0

感謝@colxi的回覆。如果我只想打印'helloworld helloworld2',你的回覆是正確的。但這是一個例子。我想要在函數內部存在任何代碼的情況下共同輸出這兩個函數。謝謝 –

+0

我不明白,你是什麼意思? – colxi

0

你確定,你明白重寫?

你的樣品與帕爾瑪相同,如何覆蓋它?

和JavaScript沒有關於覆蓋的方法,但您可以用其他方式覆蓋。你可以按照other questions in stackoverflow

0

使用閉包,以避免污染全局命名空間:

function helloWorld() { 
    return 'helloworld '; 
} 

helloWorld = (function() { 
    var original = window.helloWorld; 
    return function() { 
    return original() + ' helloworld2'; 
}})(); 

alert(helloWorld());