【发布时间】:2015-03-05 19:58:19
【问题描述】:
This 文章描述了一些避免命名空间污染的模式。我列出了下面的模式以及文章中给出的部分示例代码。
我的问题是:有没有普遍接受的“最佳”方式?为我的项目选择一种时有哪些注意事项?
直接分配
var myApp = {}
myApp.id = 0;
myApp.next = function() {
return myApp.id++;
}
使用对象文字符号
var myApp = {
id: 0,
next: function() {
return this.id++;
}
}
模块模式
var myApp = (function() {
var id= 0;
return {
next: function() {
return id++;
},
};
})();
命名空间参数
var myApp = {};
(function(context) {
var id = 0;
context.next = function() {
return id++;
};
})(myApp);
这是一个命名空间代理
var myApp = {};
(function() {
var id = 0;
this.next = function() {
return id++;
};
this.reset = function() {
id = 0;
}
}).apply(myApp);
我目前使用的方法
我在自己的项目中使用了以下方法。不好吗?
function MyObj(){
this.someProperty = 'something';
}
MyObj.prototype.someFunction = function(){
this.someProperty =5;
}
myApp = new MyObj();
【问题讨论】:
-
好吧,您正在创建 两个 全局符号而不是一个,所以如果您认为这很糟糕,那就太糟糕了。
标签: javascript design-patterns namespaces global