在Javascript中,在构造函数实例周围包含括号是什么意思?

时间:2014-04-09 19:41:47

标签: javascript

我发现这段代码我不太明白。

var Vehicle = function Vehicle(color) {
  this.constructor;       // function Vehicle()
  this.color = color;
}

(new Vehicle("tan")).color;   // "tan"

为什么要(new Vehicle("tan")).color

为什么要额外()

我在此博客中找到了代码http://pivotallabs.com/javascript-constructors-prototypes-and-the-new-keyword/

1 个答案:

答案 0 :(得分:1)

它没有做任何事情。 new运算符优先于函数调用(()部分),因此与键入new Vehicle("tan").color相同。但是,它确实使代码更具可读性,我建议使用它。

要自己演示这里发生了什么,请尝试使用语法来查看会发生什么:

new Date().getTime()   //1397073088727
(new Date()).getTime() //1397073088727
new (Date()).getTime() //error
new (Date)().getTime() //1397073088727
Date().getTime()       //error
new (Date().getTime()) //error