2016-03-02 41 views
1

請大家困惑,這兩個項目有什麼區別? 我想申請這個代碼的解決方案我在這裏寫的是鏈接plunkr http://plnkr.co/edit/NHS1XYApFEOB2ROUpRSH請問JavaScript中這兩個項目有什麼區別?

感謝幫助。我是一個全新的編碼。

var myVariable = {}; 
Object.defineProperties(myVariable, { 
    'newProperty1': { 
     value: 'valueOfPropertyOne' 
    } 
}); 

和:

var myVariable = []; 
Object.defineProperties(myVariable, { 
    'newProperty1': { 
     value: 'valueOfPropertyOne' 
    } 
}); 

回答

3

不同的是,在第一種情況下,你結束了非陣列對象,因爲你與{}(對象初始)中創建它,而在第二你最終會得到一個數組(也是一個對象),因爲你用[](數組初始值設定項)創建了它。因此,在第二種情況下,您將擁有神奇的length屬性,Array.prototype等提供的各種東西。

通常,只有在需要這些陣列特定功能時纔會使用數組。

您可以在數組上定義newProperty1的原因是數組是對象,因此您可以爲它們添加屬性。事實上,正常的陣列就像你在第二個例子中使用的陣列aren't really arrays at all(鏈接到我貧血的小博客上的帖子),它們只是具有一些特殊功能的支持Array.prototype的對象。

+0

謝謝老闆......你是最棒的。 –