Kev*_* Li 14 javascript initialization new-operator
我在Chrome控制台中运行了以下一对代码段,结果相同:
test = new function(){
var a = 1;
var b = 2;
var c = 3;
this.debugBase = function(){console.log('' + a + b + c)};
};
test
debugBase: function (){console.log('' + a + b + c)}
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
与:
test2 = new (function(){
var a = 1;
var b = 2;
var c = 3;
this.debugBase = function(){console.log('' + a + b + c)};
})();
test2
debugBase: function (){console.log('' + a + b + c)}
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?函数后的括号有什么意义吗?如果没有,为什么人们把它们放在那里?
Mar*_*rth 13
这里提出了类似的问题:新的MyClass()与新的MyClass.Daniel Vassallo完整且接受的答案:
引用David Flanagan 1:
作为一种特殊情况,
new仅对于运算符,如果函数调用中没有参数,则JavaScript允许省略括号,从而简化了语法.以下是使用new运算符的一些示例:Run Code Online (Sandbox Code Playgroud)o = new Object; // Optional parenthesis omitted here d = new Date();
就个人而言,我总是使用括号,即使构造函数不带参数.
此外,如果省略括号,JSLint可能会伤害您的感受.它报告
Missing '()' invoking a constructor,并且该工具似乎没有选择容忍括号遗漏.
1 David Flanagan:JavaScript权威指南:第4版(第75页)
| 归档时间: |
|
| 查看次数: |
3150 次 |
| 最近记录: |