2014-03-03 73 views
3
創建變量

我四處張望,看到這個頁面,他們在創建變量時使用StringArray構造函數。用構造函數

這與不使用它們有何不同?

例子:

var str = "string"; // How I'd normally do it. 
var str = new String("string"); // How they did it. 

var arr = ["Array", "Item"]; // How I'd normally do it. 
var arr = new Array("Array", "Item"); // How they did it. 

這兩個究竟是如何做的有什麼不同?

+1

通過'new'創建對象/數組比較慢。希望有些大師能夠深入解釋。 – davidkonrad

回答

3
var str = "string"; // typeof string 

這被表示爲內存塊,使用它,如果你不想打電話給成員做它

var str = new String("string"); // typeof object 

這是一個盒裝的對象,這是稍微更消耗資源,但如果你打電話即

"Hello".length; 

JS解析器必須首先從字符串內存中創建盒裝對象,然後調用方法,它甚至更慢。

數組語法始終是JS中的裝箱對象:[]只是new Array() AFAIK的語法縮寫。呃,差不多:看下面的zzzzBov的評論。

+3

'new Array(...)'和'[...]'之間的唯一區別是當您傳遞一個數字參數時。 'new Array(2)'將創建一個長度爲2的數組,而'[2]'將在索引'0'處創建一個值爲'2'的數組。由於這種令人驚訝的不一致性,建議*總是使用數組文字語法'[]'。 – zzzzBov