Javascript: 创建私有对象属性的语法
Javascript: Syntax creating private object properties
由于学习新事物,我遇到了如何将事物设为私有和 public。我的基本想法很清楚。但就其构建方式而言,我遇到了一个具体问题:
var NOW = (function(){
var privateVariable = 5;
var privateFunction = function(){};
return{
publicVariable: 4,
publicFunction: function(){}
};
})();
所以我的问题是为什么函数包含在方括号(圆括号)内?
var NOW =
(
function(){...}
)
();
它们在该代码中是可选的,这也可以正常工作:
var NOW = function(){
var privateVariable = 5;
var privateFunction = function(){};
return{
publicVariable: 4,
publicFunction: function(){}
};
}();
人们习惯于包装他们将在 ()
中立即调用的函数,因为如果您 没有 将结果分配给某些东西(或类似),有必要告诉解析器 function
关键字正在启动函数 expression 而不是函数 declaration。例如,这不行:
function() { alert("foo"); }();
因为当解析器遇到 function
它可能需要语句、声明或表达式的地方时,它假定它开始了一个声明。所以我们这样做:
(function() { alert("foo"); })();
或者这个:
(function() { alert("foo"); }());
或任何其他事情(参见 this question's answers)将解析器置于期望表达式而不是语句或声明的模式。
由于学习新事物,我遇到了如何将事物设为私有和 public。我的基本想法很清楚。但就其构建方式而言,我遇到了一个具体问题:
var NOW = (function(){
var privateVariable = 5;
var privateFunction = function(){};
return{
publicVariable: 4,
publicFunction: function(){}
};
})();
所以我的问题是为什么函数包含在方括号(圆括号)内?
var NOW =
(
function(){...}
)
();
它们在该代码中是可选的,这也可以正常工作:
var NOW = function(){
var privateVariable = 5;
var privateFunction = function(){};
return{
publicVariable: 4,
publicFunction: function(){}
};
}();
人们习惯于包装他们将在 ()
中立即调用的函数,因为如果您 没有 将结果分配给某些东西(或类似),有必要告诉解析器 function
关键字正在启动函数 expression 而不是函数 declaration。例如,这不行:
function() { alert("foo"); }();
因为当解析器遇到 function
它可能需要语句、声明或表达式的地方时,它假定它开始了一个声明。所以我们这样做:
(function() { alert("foo"); })();
或者这个:
(function() { alert("foo"); }());
或任何其他事情(参见 this question's answers)将解析器置于期望表达式而不是语句或声明的模式。