◆

JavaScript 类数组对象详解与转数组方法

2023-02-02 01:370

什么是类数组对象

如果一个对象的所有键名都是正整数或零,并且有 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
💬留言板0

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

PAGE LOAD / LIVEJavaScript 类数组对象详解与转数组方法加载中