Javascript:创建私有对象属性的语法

时间:2016-10-24 11:34:35

标签: javascript object properties private

由于学习了新的东西,我遇到了如何私密和公开的事情。我的基本想法很清楚。但就其构建方式而言,我得到了一个具体问题:

var NOW = (function(){
    var privateVariable = 5;
    var privateFunction = function(){};
    return{
        publicVariable: 4,
        publicFunction: function(){}
    };
})();

所以我的问题是为什么函数包含在括号内(括号)?

var NOW = ( function(){...} ) ();

1 个答案:

答案 0 :(得分:5)

它们在该代码中是可选的,这也可以正常工作:

var NOW = function(){
    var privateVariable = 5;
    var privateFunction = function(){};
    return{
        publicVariable: 4,
        publicFunction: function(){}
    };
}();

人们习惯于包装他们将在()中立即调用的函数,因为如果你将结果分配给某些东西(或类似的东西),那么这是必要的告诉解析器function关键字正在启动函数表达式而不是函数声明。例如,这不合适:

function() { alert("foo"); }();

因为当解析器遇到function时,它可能期望语句,声明或表达式,因此它假定它启动声明。所以我们这样做:

(function() { alert("foo"); })();

或者这个:

(function() { alert("foo"); }());

或其他任何事情(参见this question's answers)将解析器置于期望表达式的模式,而不是语句或声明。