我看到他们在使用indexeddb的一些示例中使用名称空间:http://www.html5rocks.com/en/tutorials/indexeddb/todo/或http://greenido.wordpress.com/2011/06/24/how-to-use-indexdb-code-and-example/
这样做有什么好处吗?它只是用于组织相关对象吗?
答案 0 :(得分:8)
简单(AFAIK),以防止名称冲突和污染父命名空间。
答案 1 :(得分:6)
在他的回答中,德米安击中了头上的钉子:为了避免名称碰撞和范围污染,你要命名一些东西。
但它们也可以使您的代码更容易理解。举个例子,如果你有两个显示和隐藏图像的功能,它们可以被称为show
和hide
,并且存在于任何范围内。但是你还必须在某处显示和隐藏div,因此showImage
和hideImage
会更好。但随后您添加了淡入淡出,替换和缩放图像的方法,很快就会有很多…Image
个函数。将所有这些放入名为Image
的命名空间中,它们可以只是Image.hide
,Image.show
,Image.zoom
等等。代码变得不言自明,您不必记得在编写代码时调用每个函数…Image
,因为您可以说var Image = {show:…, hide:…, …etc}
或类似。从结构上讲,通过将相关功能保持在一起(如您所述),您也可以获得更好的代码。
我喜欢使用的类比是,您的计算机桌面就像全局命名空间。您可以继续将文件放在桌面上,但它会很快变得混乱,并且您的所有文件都需要非常复杂的名称才能是唯一的。因此,您使用文件夹来组织所有内容。每个人都看到使用文件夹来组织计算机上的东西的好处,那么为什么不在编码时使用类似的概念呢?
答案 2 :(得分:2)
命名空间通常用于避免变量/函数/方法标识符冲突,并保持全局命名空间(如果有)清除。