我正在考虑不同类型的命名空间,并想知道最好使用哪种。
我个人使用以下内容:
var App = {
foo: function(){},
bar: function(){}
}
但我注意到一些大师正在使用一些不同的技术,我想知道为什么要采取额外的步骤。
var app = app || {}
这样做是出于必要还是出于复杂性?您建议使用哪一个?
最佳答案
您所询问的构造本身与命名空间无关。这只是一种不破坏现有值(或命名空间,如果你愿意的话)的方法。
如果您认为 App
可能已经存在,并且您不想用您的实现覆盖它,则可以使用如下内容:
var App = App || {};
App.foo = function(){};
App.bar = function(){};
当然,如果App
确实存在,并且具有属性foo
和/或bar
,您将破坏那些。
适当的命名空间允许调用者决定调用什么内容。例如,假设您的项目想要导出 App
。但是如果调用者已经在使用App
怎么办?现在他们有责任更改名称。更好的方法是让他们决定如何调用它。 Node 中的命名空间是这样工作的:
var http = require('http');
var myHttp = require('http');
http
和 myHttp
都是 http
包的实例,但调用者可以决定它们实际的名称。
Browserify ( https://github.com/substack/node-browserify ) 项目允许在浏览器中使用 Node 样式的包,这非常方便。它似乎变得很受欢迎。
关于javascript - 命名空间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21718988/