1

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

这样做有什么真正的好处吗?它只是为了组织相关的对象吗?

4

3 回答 3

8

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

于 2011-09-01T22:10:32.513 回答
6

Demian 在他的回答中一针见血:你命名事物以避免名称冲突和范围污染。

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

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

于 2011-09-01T22:27:28.097 回答
2

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

于 2011-09-01T22:12:41.017 回答