据说这里:为什么jQuery不污染全局命名空间?
http://briancrescimanno.com/2009/09/24/how-self-executing-anonymous-functions-work/
看看jQuery的源代码,你会看到整个 库被包裹在为 单,自动执行功能分配给jQuery全局对象。
但是既然jQuery是GLOBAL对象,它会污染全局命名空间,或者我错过了某些东西?
据说这里:为什么jQuery不污染全局命名空间?
http://briancrescimanno.com/2009/09/24/how-self-executing-anonymous-functions-work/
看看jQuery的源代码,你会看到整个 库被包裹在为 单,自动执行功能分配给jQuery全局对象。
但是既然jQuery是GLOBAL对象,它会污染全局命名空间,或者我错过了某些东西?
在全局范围内只有一个(两个)变量不被认为是全球范围的污染。它就像一个命名空间,其他库不太可能会调用它们的命名空间'jQuery'(更可能是$
)。甚至在这种情况下,jQuery通过实现noConflict
函数来优雅地处理它。
哦,其他库很可能会使用'$'。这是一个JavaScript库磁铁:P – Anurag 2012-01-05 22:21:33
您没有正确阅读该博客文章中的下一句。它并没有声称有没有污染:
这正是jQuery不会污染全局命名空间远远不如其他库的原因。
想想替代方案也很有意义:如果在全局范围内没有对象,对象在哪里? Javascript中的所有内容都有一个范围,所以如果$不在全局命名空间或另一个JavaScript对象中,它就是没有约束且无法访问的。这种情况应该是不可能的。每个对象必须去某处。
如果JavaScript对象存在,但没有范围,是否可用? 如果一棵树落在森林里,但没有人在附近,它会发出声音吗?
定义“污染”。一个*单个对象*“污染”了命名空间吗? – 2012-01-05 22:19:36