類數組

類數組就是有length屬性的對象。它能夠像數組同樣,但沒法使用數組的函數,如push.數組

var arr = {
    0: 'a',
    1: 'b',
    2: 'c',
    length: 3
};
console.log(arr[0]);// a
console.log(arr.length);// 3
console.log(arr instanceof Array);// false
arr.push('d');// 報錯

典型的相似數組的對象是函數的arguments對象,以及大多數DOM元素集,還有字符串。函數

function args() { return arguments }
// 函數的參數
var arrayLike = args('a', 'b');

console.log(arrayLike[0]); // 'a'
console.log(arrayLike.length); // 2
console.log(arrayLike instanceof Array); // false
arrayLike.push('c');// 報錯

// DOM元素集
var elts = document.getElementsByTagName('h3');
elts.length // 3
elts instanceof Array // false

// 字符串
'abc'[1] // 'b'
'abc'.length // 3
'abc' instanceof Array // false

數組的slice方法將相似數組的對象,變成真正的數組。僅以字符串爲例prototype

var str = 'abc';
var arr = Array.prototype.slice.call(str);
console.log(arr[0]); // 'a'
console.log(arr.length); // 3
console.log(arr instanceof Array); // true
console.log(arr.push('d'));// 4

類數組的遍歷可使用for循環,也可使用數組的foreachcode

for (var i = 0; i < arr.length; i++) {
    console.log(i + '. ' + arr[i]);
}

Array.prototype.forEach.call(arr, function(elem, i) {
    console.log(i + '. ' + elem);
});
相關文章
相關標籤/搜索