javascript定義類數組對象的方法是:1、首先建立一個空對象;2、為對象直接定義數字下标的屬性;3、關鍵點,為對象設定length屬性和splice屬性為數字和函數。
js中類數組對象很多,概念簡單的講就是看上去像數組,又不是數組,可以使用數字下标方式通路又沒有數組方法。
例: arguments , NodeList , HTMLCollection , jQuery 等
類數組對象特性
1、擁有 length 屬性
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZwczMjR2YxUjZhVWYlZWOwQjY1EGZkRDNiRTO4EjZy8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、可以使用數字下标的方式通路對象
3、不能使用數組原型的方法(如 slice , pop 等)
4、使用 instanceof 操作不屬于 Array
5、可以轉換為真數組對象
PS:注意在IE8下部分對象無法使用slice方法轉換為真數組對象。
建議使用jquery提供的 $.makeArray() 方法轉換類數組對象
6、通常可定義有其他自定義屬性
類數組對象優點
關于優點我相信不用太多描述,可以讓js和其他背景語言擁有相同的操作方式。
如C#的某些list集合,可以使用數字下标 list[0] 來通路或是使用字元串名稱 list[‘name’] 來通路同一對象
同時還擁有各種自定義方法,自定義屬性,看jquery對象的優雅的通路方式即可知是如此美妙的對象。
如何手動建立類數組對象
回歸主題,如何手動建立類數組對象。
1、首先建立一個空對象
2、為對象直接定義數字下标的屬性,這在其他語言裡是絕對不允許的,對象屬性不能使用數字開頭,但JS裡是可以的,甚至使用中文都可以
3、關鍵點,為對象設定length屬性和splice屬性為數字和函數
PS:設定splice屬性其實是為了欺騙浏覽器的控制台,另其顯示出數組的模樣,可以參考這裡
4、測試
5、全部代碼: