新增命名屬性:JavaScript 怪癖
在JavaScript 中,可以以意想不到的方式操作數組,包括添加命名屬性的能力屬性就好像它們是物件一樣。這就提出了一個問題:使用括號聲明具有命名屬性的陣列與使用物件字面量聲明數組之間有什麼根本區別嗎?
簡短的答案是:是的,有差別。
雖然這兩種方法表面上表現相似,並且在使用 typeof() 檢查時傳回「物件」類型,但它們的基本性質不同。數組用於數字索引數據,而物件是為非數字鍵設計的。
為了說明這種區別,請考慮以下內容:
var myArray = Array(); myArray['A'] = "Athens"; myArray['B'] = "Berlin"; alert(myArray.length);
此程式碼將顯示“0”,而人們可能會期望它顯示“2”。這是因為新增到陣列的命名屬性不會影響其長度屬性。相反,它們被視為數組物件上的附加屬性。
相反,使用命名屬性聲明的物件文字將正確反映其長度:
var myObject = {'A': 'Athens', 'B': 'Berlin'}; alert(myObject.length); // This would display '2'
因此,雖然有可能將命名屬性添加到數組中,這被認為是“濫用” ,應該避免。對於非數字鍵,最佳做法是使用物件。
以上是將命名屬性加入 JavaScript 陣列:物件文字與括號表示法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!