2014-04-09 165 views
0

我發現這段代碼,我不太明白。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/

+2

嘗試,當你刪除它會發生什麼:'新車(「棕褐色」)的顏色;' (這是個詭計的問題)。 –

+0

我得到了同樣的結果。 :-( – toy

+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 
相關問題