通过在第二个代码片段中直接声明NS,可以完成同样的事情,以下示例中返回方法的重点是什么?
1:
var NS = function() {
return {
method_1 : function() {
// do stuff here
},
method_2 : function() {
// do stuff here
}
};
}();
2:
var NS = {
method_1 : function() { do stuff },
method_2 : function() { do stuff }
};
答案 0 :(得分:11)
在您的特定示例中,没有任何优势。但您可以使用第一个版本隐藏一些变量:
var NS = function() {
var private = 0;
return {
method_1 : function() {
// do stuff here
private += 1;
},
method_2 : function() {
// do stuff here
return private;
}
};
}();
这在Douglas Crockford的“JavaScript:The Good Parts”中被称为模块。如果您在网上搜索,您应该能够找到完整的解释。
基本上,在Javascript中创建新变量范围的唯一事情是函数,因此大多数全局减少都围绕使用对象的属性(在本例中为NS)或使用函数创建变量范围(私有变量)在这个例子中)。