js中僞(類)數組

僞數組

擁有 length 屬性,其它屬性(索引)爲非負整數(對象中的索引會被當做字符串來處理,僞數組同樣有 length 屬性,也有 0、1、2、3 等屬性的對象,看起來就像數組一樣,但不是數組,
僞數組不具有數組所具有的方法

  1. 可以利用屬性名模擬數組的特性
  2. 可以動態的增長length屬性
  3. 如果強行讓類數組調用push方法,則會根據length屬性值得位置進行屬性的擴充。

比如:

var Array = {
  "0": "first",
  "1": "second",
  "2": "third",
  length: 3
};
 
for (var i = 0; i < Array.length; i++) {
  console.log(Array[i]);
}

常見的僞數組有:

函數內部的 arguments
DOM 對象列表(比如通過 document.getElementsByTags 得到的列表)
jQuery 對象(比如 $("div") )
僞數組是一個 Object,而真實的數組是一個 Array。

僞數組存在的意義,是可以讓普通的對象也能正常使用數組的很多方法

類數組必須有幾個組成部分:

1.屬性要爲索引(數字)屬性

2.必須有length屬性

3.最好加上push方法

4. "splice" : Array.prototype.splice

var obj = {
 
      0 : "a",
 
      1 : "b",
 
      2 : "c",
 
      name : "abc",
 
      age : 123,
 
     length : 3,
 
     push : Array.prototype.push,
 
     splice : Array.prototype.splice
 
}

這樣一個類數組的基本形態已經算是構建完了,怎麼用呢??

Obj有push方法,只不過是拿的別人的,現在obj調用push,所以push裏面的this就是obj了。

他在”2”的後面加了一個”3”:’d’,並且lenngth也變成了四,這些都是一個對象不能具備的東西,憑什麼又加什麼,又改東西的。這樣的東西就叫類數組,

類數組的好處就是把數組和對象拼接在一起,但是他所有數組的方法並不是都能用。

兩者之間的區別

  • 僞數組不具有數組所具有的方法
  • 對象沒有數組 Array.prototype 的屬性值,類型是 Object ,而數組類型是 Array
  • 數組是基於索引的實現, length 會自動更新,而對象是鍵值對
  • 使用對象可以創建僞數組,僞數組可以正常使用數組的大部分方法
發佈了38 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章