本文共 1005 字,大约阅读时间需要 3 分钟。
在JavaScript中,某些对象虽然不是数组,但在行为上与数组非常相似。这些对象被称为伪数组。典型的伪数组包括函数的arguments对象、DOM元素集合以及某些字符串。伪数组的特点主要体现在以下几个方面:
1. **具备length属性**:伪数组对象都能提供length属性,表示其元素的数量。
2. **按索引存储数据**:伪数组的元素可以通过数字索引随机访问,这与真正的数组一致。
3. **缺少数组特有的方法**:与真正的数组不同,伪数组通常不具备push、pop等数组特有的方法。
下面的示例展示了一个伪数组的结构:
这个伪数组的元素可以通过索引随机访问,并且具备length属性。例如,下面的代码可以获取集合并打印结果:
const oUL = document.querySelector('ul');console.log(oUL[0], oUL[1], oUL[2]); 虽然伪数组在行为上与数组相似,但它们并不是真实的数组对象。要将伪数组转换为真实的数组,可以使用以下方法:
1. **使用Array.prototype.slice.call()**:这是一个常用的方法,例如:
Array.prototype.slice.call(oUL);
2. **使用ES6的Array.from()方法**:这也是一个简洁的选择,例如:
Array.from(oUL);
有时候,开发者可能需要创建一个伪数组对象。以下是一个实现示例:
const obj = { "0": "aaa", "1": 12, "length": 2, push: Array.prototype.push, splice: Array.prototype.splice};// 动态改变length并添加新元素obj.push = function(arr) { this.length++; return this;};console.log(obj);obj.push("newVal");console.log(obj); 通过这种方式,我们可以创建一个具备数组方法的伪数组对象。这个对象可以像真实数组一样进行操作,但它的元素是通过对象属性存储的。
转载地址:http://yopo.baihongyu.com/