2013-03-14 77 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