什么是创建JavaScript名称空间的最佳方式?
我还没有找到互联网上用JavaScript创建名称空间的常用方法。
创建名称空间的最佳方式是什么(请列出特定方法可能存在的任何问题)。
(function() {
var usefulVariable;
var foo = {
bar:function(){ alert('hi') }
};
// leak into global namespace
window.foo = foo;
})();
只有foo
暴露于全局名称空间,并且它“存在于”执行匿名函数名称空间的私有自执行程序中。
在JavaScript中,命名空间只能通过对象文字实现,这可以像这样简单:
var MyNS = {
f1: function() {...},
f2: function() {...}
};
正如其他人试图说明的那样,如果您想在您的名称空间(建议)内提供私有作用域,则以下方法是最合适的:
var MyNS = (function() {
var private1 = "...",
private2 = "...";
return {
f1: function() {...},
f2: function() {...}
}
})();
Pro JavaScript设计模式(Harmes&Diaz,2008)提供了使用简单对象文字或自动执行匿名函数的命名空间创建示例,这两个示例都在Justin Johnson的出色答案中进行了说明,并且这些方法运行良好。
根据情况,命名空间可能已经存在并且包含成员。 在这种情况下,这些方法会摧毁名称空间中的所有成员。 如果这是一个问题,可以使用类似于此的方法来保留任何现有成员,同时添加新成员:
var myNamespace = (function(ns) {
ns.f1 = function() { ... };
ns.f2 = function() { ... };
return ns;
})(window.myNamespace || {});
在这里,myNamespace被分配由匿名,自我执行的函数返回的值,该函数接收参数ns。 可以看到,此参数的值是window.myNamespace或一个空对象,具体取决于是否先前已声明了myNamespace。
链接地址: http://www.djcxy.com/p/17069.html