2015-10-04 78 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