类数组就是有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方法将类似数组的对象,变成真正的数组。仅以字符串为例
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循环,也可以使用数组的foreach
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);
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。