2011-01-27 125 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