为什么他们在javascript中使用命名空间?

Cha*_* Le 1 javascript namespaces indexeddb

我看到他们在使用indexeddb的一些例子中使用命名空间:http://www.html5rocks.com/en/tutorials/indexeddb/todo/ 或http://greenido.wordpress.com/2011/06/24/how-使用的-INDEXDB码和-例如/

这样做有什么好处吗?它只是用于组织相关对象吗?

Dem*_*cht 8

简单(AFAIK),以防止名称冲突和污染父命名空间.


Fla*_*ino 6

在他的回答中,德米安击中了头上的钉子:你命名的东西,以避免名称冲突和范围污染.

但它们也可以使您的代码更容易理解.只是作为一个例子,如果你有两个功能来显示和隐藏的图像,他们可以被称为showhide在任何范围存在.但你也有显示和隐藏一个div的地方,所以showImagehideImage效果会更好.但随后您添加了淡入淡出,替换和缩放图像的方法,很快您就拥有了许多…Image功能.折腾那些到一个名为命名空间Image,他们可能仅仅是Image.hide,Image.show,Image.zoom等.代码变得不言自明,您不必记住…Image在编写代码时调用每个函数,因为您可以说var Image = {show:…, hide:…, …etc}或类似.在结构上,您还可以通过将相关功能保持在一起来获得更好的代码(如您所述).

我喜欢使用的类比是,您的计算机桌面就像全局命名空间.您可以继续将文件放在桌面上,但它会很快变得混乱,并且您的所有文件都需要非常复杂的名称才能是唯一的.因此,您使用文件夹来组织所有内容.每个人都看到使用文件夹来组织计算机上的东西的好处,那么为什么不在编码时使用类似的概念呢?