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

时间:2011-09-01 22:08:56

标签: javascript namespaces indexeddb

我看到他们在使用indexeddb的一些示例中使用名称空间:http://www.html5rocks.com/en/tutorials/indexeddb/todo/http://greenido.wordpress.com/2011/06/24/how-to-use-indexdb-code-and-example/

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:6)

在他的回答中,德米安击中了头上的钉子:为了避免名称碰撞和范围污染,你要命名一些东西。

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

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

答案 2 :(得分:2)

命名空间通常用于避免变量/函数/方法标识符冲突,并保持全局命名空间(如果有)清除。