2015-10-04 64 views
1

比方说,一个网页有来自外部的JavaScript文件加载下面的代码:修改现有的嵌套JavaScript函数

(function(foo) { 
    function bar() { 
     // Do something 
    } 

    function baz() { 
     // Do something else 
    } 
})(window, window.jQuery); 

为了讨论各种情形,让我们说我在写一个Chrome扩展程序将加载脚本我通过对一些现有代码的更改而创建;可能更改bar函数,但不更改baz。我可以复制所有现有代码,进行更改并在阻止原始代码后加载修改过的JavaScript,但如果我能避免这种情况,我不想这样做。

有没有方法来修改现有的嵌套函数的行为,而不加载修改后的代码的完整副本?

回答

1

不是,没有。

pattern,紧挨着的调用的匿名闭包:

(function() { 
    // stuff 
})(); 

是专门用来隐藏从全局命名空间内的内容。一旦代码完成执行,就没有可以访问其内部内容的引用。

因此,您的计划阻止脚本,然后提供您的完整副本似乎是唯一你可以做的。

+0

我明白。谢谢你澄清这一点。 – driima