有关此事的最佳实践是什么?
JavaScript碰撞是指当您有两个全局对象具有相同名称并且一个覆盖另一个时。例如,您可能引用了两个库,这两个库都在根对象(window)上使用名为$的函数作为查询函数。理念就是应尽可能少地使用全局对象。最好的方法是为您编写的任何JS创建命名空间,就像任何其他语言一样:
var myApplication = {};
然后在命名空间内添加任何后续的函数/对象:
myApplication.init = function () {
}
<script>
var foo = "test1";
document.write(foo+"\n"); //test1+ a linebreak
(function(){
document.write(foo+"\n"); //test1+ a linebreak
var foo = "test2";
document.write(foo+"\n"); //test2+ a linebreak
})();
document.write(foo+"\n"); //test1+ a linebreak
</script>
我认为这是一种检测两个物体碰撞的概念,这种技术在创建基于JavaScript的游戏时特别有用。
这也涉及到不同JavaScript库之间的冲突,例如在一个页面中同时使用jQuery和Prototype,由于常见的$
符号而导致什么都无法正常工作。
我认为这是当一个爱对方的Mummy Javascript和Daddy Javascript想要评估一个baby Javascript时发生的事情。
然而,我的老师在这一点上并不是很清楚...