我们假设一个网页从外部JavaScript文件中加载了以下代码:
(function(foo) {
function bar() {
// Do something
}
function baz() {
// Do something else
}
})(window, window.jQuery);
为了论证,让我们说我正在编写一个chrome扩展,它将加载我创建的脚本,并对一些现有代码进行更改;可能会更改为bar
函数,但不会更改为baz
。我可以复制所有现有代码,进行更改,并在阻止原始文件后加载修改后的JavaScript,但如果可以避免,我也不想这样做。
有没有办法修改现有嵌套函数的行为而不加载修改过的代码的完整副本?
答案 0 :(得分:1)
不是,不。
这个pattern,一个立即调用的匿名闭包:
(function() {
// stuff
})();
专门用于隐藏全局命名空间中的内部内容。一旦该代码完成执行,就没有可以访问其内部内容的引用。
因此,您阻止脚本然后提供完整副本的计划似乎是您唯一可以执行此操作的计划。