Eli*_*lka 4 javascript namespaces
我被告知不应该使用命名空间,因为它们"污染"全球范围.我想知道有什么选择?
当我想为网站定义实用函数和/或常量时,一个简单的方法是通过命名空间定义它们,这样对全局范围的损害仅限于一个对象.
如果命名空间是不好的做法,我会想到几个问题:
这个问题是关于使用extend.js的好处的帖子开始讨论的结果.
为什么这是不好的做法?
命名空间本身很糟糕,因为它是一个不必要的概念.
拥有属性和方法的对象是可以接受的.拥有一个类似于"命名空间"的"模块"标记也没关系,但意思是每个文件都有一个"模块"标记,其中包含所有属性和方法.这与"命名空间"不同,因为它仅在单个文件中创建/更改,并且不作为全局令牌公开.
这个声明的范围是什么(网络应用程序/动态网站/静态网站等)?
所有ECMAScript,永远不会创建新的全局令牌
有什么选择?
而不是拥有命名空间,你应该支持多个"文件本地"令牌.这意味着每个文件/"模块"应该包装在一个闭包中,你应该可以访问这个闭包内的多个局部变量.
全局变量也很糟糕,因为你根本不需要它们.避免全局变量的方法是将所有内容包装在闭包中,并在加载外部javascript文件时保持智能.
零全局模块加载器的示例
进一步阅读: