【问题标题】:Javascript: Syntax creating private object properties [duplicate]Javascript:创建私有对象属性的语法[重复]
【发布时间】:2017-03-06 04:02:03
【问题描述】:

由于学习新事物,我发现了如何将事物设为私有和公开。我的基本想法很清楚。但就它的构建方式而言,我有一个具体的问题:

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

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

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

【问题讨论】:

  • 第二部分是什么?是反应jsx吗?
  • @RobertMoskal:我认为这只是试图强调有问题的()
  • 没有第二部分,我只是想出了这段代码来显示我的问题。这个问题已经很好回答了,谢谢大家

标签: javascript object properties private


【解决方案1】:

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

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),以将解析器置于期望表达式而不是语句或声明的模式。

【讨论】:

  • 解释得很好,也很清楚为什么要使用这个约定,尽管在这种情况下没有必要。干杯
猜你喜欢
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
相关资源
最近更新 更多