gpt4 book ai didi

javascript - 关于 javascript 命名空间的问题

转载 作者:行者123 更新时间:2023-12-02 06:10:52 25 4
gpt4 key购买 nike

当您可以通过在第二个代码片段中直接声明 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 }
};

最佳答案

在您的特定示例中没有优势。但是你可以使用第一个版本来隐藏一些变量:

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)或使用函数创建变量范围(私有(private)变量在这个例子中)。

关于javascript - 关于 javascript 命名空间的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2977032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com