2013-04-18 35 views
1

在兩種情況下對象whiteStripes是否完全相同?將關聯數組聲明爲一個新的Array()與將關聯數組聲明爲對象{}相同?

var whiteStripes = {'Jack' : 'White', 'Meg' : 'White'}; 

var whiteStripes = new Array(); 
whiteStripes['Jack'] = 'White'; 
whiteStripes['Meg'] = 'White'; 
+4

有在JavaScript – Musa

+0

'VAR白色條紋=新的對象()沒有關聯數組;'將是同樣的事情,但不能以'新陣列()'。 – Pointy

+0

http://stackoverflow.com/questions/8067590/associative-array-versus-object-in-javascript的副本 – nullability

回答

3

雖然你仍然可以在兩種情況下訪問屬性的方法相同(whiteStripes['Jack'])在聲明whiteStripes = new Array();你說的它擁有所有的特性,像length例如數組的屬性。如果您不打算將它用作真實數組(poppush,length等),則不要使用JavaScript數組。

2

不,它不是完全一樣的東西。

兩者都會工作,因爲一個數組是也是的一個對象,但是如果你只想要一個對象,你不應該創建一個數組來獲得一個。

這將導致完全一樣的東西被創造:

var whiteStripes = {'Jack' : 'White', 'Meg' : 'White'}; 

var whiteStripes = new Object(); 
whiteStripes['Jack'] = 'White'; 
whiteStripes['Meg'] = 'White';