2013-03-14 65 views
1

window不能被重新定義像我們看到在這個例子:Jquery和IIFE包裝澄清?

http://i.stack.imgur.com/IYX0p.jpg enter image description here

那麼,爲什麼jQuery的啓動本身window(它甚至使用相同的名稱)?

(function(window, undefined) {...})(window);

我的意思是,它可能有使用window裏面......

附:該undefined招有什麼關係呢?

+0

亞歷克斯,爲什麼它不發送'這個'? – 2013-03-14 11:37:01

+0

@ alex23 by muiltiple windows你的意思是實際上Iframes。但如果我將jquery添加到主窗口中,應該還是有問題。? – 2013-03-14 11:43:21

+0

「窗口」在將來可能會被重新定義是否不合理?我不排除這種可能性,因此會感謝我的所有網站都沒有因爲更新或流行的新瀏覽器而崩潰。 – Archer 2013-03-14 12:12:47

回答

1

我想一個可能的解釋是,使JQuery的更容易端口在其他情況下,在全局對象可能不被命名爲window,甚至是嵌入在一些其他腳本在window引用當前作用域(或激活對象)中的有效標記。

無論如何,我認爲這可能是有用的唯一原因是因爲jQuery代碼可以使用window名稱而不用擔心,因爲任何供應商都可以將該名稱綁定到它想要的任何對象,只需通過更改該行的一行jQuery源代碼(最後一個)。

+0

你能告訴我一個不同'window'的例子嗎? – 2013-03-14 11:47:25

+0

我沒有。只是猜測。這被稱爲*模塊模式*,其中代碼被封裝在一個函數中,並且除了形式參數以外不訪問任何名稱。在不修改最後一行的情況下,對我來說沒有意義,因爲參數和參數的命名方式相同 – Raffaele 2013-03-14 12:00:22