JavaScript類陣列

masterHuan發表於2017-07-16

陣列的特性

以下是《JavaScript高階程式設計》中對陣列特性的定義
1. 當新的元素新增到列表時,自動更新length屬性
2. 設定length為一個較小值將截斷陣列
3. 從Array.prototype中繼承一些有用的方法
4. 其類屬性為“Array”

類陣列

在js中有一些物件它也擁有length屬性,且擁有為非負整數的屬性,但是它又不能呼叫陣列的方法,這種物件被稱為類陣列物件

簡單的一個類陣列

var arrAlike={0:'a',1:'b',2:'c',length:3}
console.log(arrAlike)
Object {0: "a", 1: "b", 2: "c", length: 3}
0:"a"
1:"b"
2:"c"
length:3
__proto__:Object

HTMLCollection,Arguments是兩個經典的類陣列物件

HTMLCollection

<div></div>
<div></div>
<div></div>
var divs = document.getElementsByTagName('div')
console.log(divs)
(3) [div,div,div]
0:div
1:div
2:div
length:3
__proto__:HTMLCollection

Arguments

function foo(){
   console.log(arguments)
}
foo('a','b','c')
[object Arguments] {
  0: "a",
  1: "b",
  2: "c"
}

類陣列轉化為陣列

類陣列雖然無法直接使用陣列的方法,但是可以間歇的使用 Function.call方法呼叫Array.prototype的方法。
如下:

var arrAlike={0:'a',1:'b',2:'c',length:3}
var arr = Array.prototype.slice.call(arrAlike)
console.log(arr)
 (3) ['a','b','c']

以上是我在學習javaScript過程中做的一些總結,如有不足之處,還請指正

相關文章