2015-06-01 47 views
3

這裏是例子爲什麼`new Array()`和`Array()`在Javascript中表現相同?

Array(1,2,3) 
> [1,2,3] 
new Array(1,2,3) 
> [1,2,3] 
Array(3) 
> [undefined, undefined, undefined] 
new Array(3) 
> [undefined, undefined, undefined] 

我看到了有關 「never use Array with new」 一些評論。但我無法理解,因爲我發現Arraynew Array似乎在Javascript中表現相同。它們爲什麼表現相同?爲什麼一種用法比另一種更受歡迎?

我知道[]文字語法通常應該用來代替Array,我只是想知道什麼是Array ..

它是一個構造函數?如果它是一個構造函數,爲什麼不使用new

+1

實際上既不'新的Array()''也不陣列()'應該被使用。使用字面語法,即'[1,2,3]'。順便說一句,JavaScript沒有阻止你在沒有'new'的情況下調用構造函數。 – helpermethod

+0

小心分享您提到的評論,以便我們瞭解上下文? :)我其實更喜歡簡單的'[]'版本:) – Icepickle

+2

不要使用'Array(1,2,3)'或'new Array(1,2,3)'。始終使用'[1,2,3]'。 –

回答

8

Array被稱爲函數,而不是作爲一個構造函數,它 創建和初始化一個新的Array對象。因此函數調用 Array(…)等價於具有相同參數的對象創建表達式new Array(…)

http://es5.github.io/#x15.4.1

+0

不錯!看遍了所有文件,但你找到了! :) – AmmarCSE

相關問題