◆
JavaScript 类数组对象详解与转数组方法
什么是类数组对象
如果一个对象的所有键名都是正整数或零,并且有 length 属性,那么这个对象就很像数组,语法上称为“类似数组的对象”
var obj = {
0: 'a',
1: 'b',
2: 'c',
length: 3,
};
obj[0]; // 'a'
obj[1]; // 'b'
obj.length; // 3
obj.push('d'); // TypeError: obj.push is not a function
上面代码中,对象 obj 就是一个类似数组的对象。但是,“类似数组的对象”并不是数组,因为它们不具备数组特有的方法。对象 obj 没有数组的 push 方法,使用该方法就会报错。
**类似数组的对象 **的根本特征,就是具有 length 属性。只要有 length 属性,就可以认为这个对象类似于数组,这种 length 属性不是动态值,不会随着成员的变化而变化。
var obj = {
length: 0,
};
obj[3] = 'd';
obj.length; // 0
上面代码为对象 obj 添加了一个数字键,但是 length 属性没变。这就说明了 obj 不是数组。
常见的类数组对象函数的 arguments 对象,以及大多数 DOM 元素集,还有字符串。
// arguments对象
function args() {
return arguments;
}
var arrayLike = args('a', 'b');
arrayLike[0]; // 'a'
arrayLike.length; // 2
arrayLike instanceof Array; // false
// DOM元素集
var elts = document.getElementsByTagName('h3');
elts.length; // 3
elts instanceof Array; // false
// 字符串
'abc'[1]; // 'b'
'abc'.length; // 3
'abc' instanceof Array; // false

还没有留言,来发表第一条吧~