Nam*_*ere 5 javascript namespaces
前段时间我听说最好将代码包装在一个大对象中作为命名空间,以减少全局命名空间的混乱并促进库的导出,所以我尝试了这个.
var wrapper = {
foo: function(){
return 42;
},
bar: this.foo()
};
Run Code Online (Sandbox Code Playgroud)
它失败了,声称"foo没有定义".在完成对象声明之前调用方法可能不好,所以我移动了bar,它起作用了.
var wrapper = {
foo: function(){
return 42;
},
};
wrapper.bar = wrapper.foo();
Run Code Online (Sandbox Code Playgroud)
我觉得这可能会变得有点难看,特别是对于嵌套的命名空间等等,那么有没有任何变通办法让人很难同时看到所有包装器的成员?
问题是这this将等于全球背景。您需要像这样访问该函数:
var wrapper = {
foo: function(){
return 42;
},
bar: null,
init : function() {
// all initialization code goes here
wrapper.bar = wrapper.foo();
}
};
wrapper.init();
Run Code Online (Sandbox Code Playgroud)
此方法非常适合将代码组织成逻辑块,以便您和未来的开发人员可以轻松地在 javascript 中找到您要查找的内容。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |