2012-01-05 44 views
-4

据说这里:为什么jQuery不污染全局命名空间?

http://briancrescimanno.com/2009/09/24/how-self-executing-anonymous-functions-work/

看看jQuery的源代码,你会看到整个 库被包裹在为 单,自动执行功能分配给jQuery全局对象。

但是既然jQuery是GLOBAL对象,它会污染全局命名空间,或者我错过了某些东西?

+5

定义“污染”。一个*单个对象*“污染”了命名空间吗? – 2012-01-05 22:19:36

回答

4

在全局范围内只有一个(两个)变量不被认为是全球范围的污染。它就像一个命名空间,其他库不太可能会调用它们的命名空间'jQuery'(更可能是$)。甚至在这种情况下,jQuery通过实现noConflict函数来优雅地处理它。

+0

哦,其他库很可能会使用'$'。这是一个JavaScript库磁铁:P – Anurag 2012-01-05 22:21:33

5

您没有正确阅读该博客文章中的下一句。它并没有声称有没有污染:

这正是jQuery不会污染全局命名空间远远不如其他库的原因。

0

想想替代方案也很有意义:如果在全局范围内没有对象,对象在哪里? Javascript中的所有内容都有一个范围,所以如果$不在全局命名空间或另一个JavaScript对象中,它就是没有约束且无法访问的。这种情况应该是不可能的。每个对象必须去某处

如果JavaScript对象存在,但没有范围,是否可用? 如果一棵树落在森林里,但没有人在附近,它会发出声音吗?

相关问题