js:详解js中的伪数组

伪数组的特性

如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,称为伪数组。典型的伪数组有函数的arguments对象,以及大多数 DOM 元素集,还有字符串。

  • 具有length属性;
  • 按索引方式存储数据;
  • 不具有数组的push()、pop()等方法;

举例

例子1:

<ul>
    <li>1111</li>
    <li>1111</li>
    <li>1111</li>
</ul>

获取集合,控制台打印
在这里插入图片描述
例子2:
argumenets 对象
在这里插入图片描述

伪数组转化为真实数组

Array.prototype.slice.call(oUL);

或者 es6 的 Array.from()

Array.from(oUL);

如何实现伪数组和伪数组转化函数

// 一个伪数组
var obj = {
    "0": "aaa",
    "1": 12,
    "length": 2,
    "push": Array.prototype.push,
    "splice": Array.prototype.splice
}
// 动态改变length,并且添加新元素到数组末尾this[this.length] = arr;
Array.prototype.push = function(arr) {
    this.length++;
}
console.log(obj);

obj.push("newVal");

console.log(obj)

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章