2011-01-27 73 views
1

比方說這個功能...如何通過注入腳本修改/擴展JavaScript函數?

function foo(param){ 
// original works 
} 

已經就地一個html文件內。

我有一個書籤注入外部腳本到文檔。從該腳本中,我想修改foo()函數的行爲...

function foo(param){ 
// original works 
bar(param); 
} 

bar()是注入腳本中的一個新函數。 我沒有問題在注入的腳本中重複foo。

我該怎麼做?

回答

2

JavaScript中的所有內容都可以是一個對象,包括函數。考慮到這一點,你可以創建舊功能的副本,然後覆蓋新的一個,而引用重複:

function foo(param){ 
// original works 
} 

var old_foo = foo; 

function foo(param) { 
old_foo(param); 
bar(param); 
} 
+0

我不知道爲什麼,我在測試類似這樣的東西,哎呀例外:* RangeError:當我運行新的foo時,超出最大調用堆棧大小*。 PS:+1。 – JCOC611 2011-01-27 02:36:12