伪数组

什么是伪数组

  • 拥有数组的length属性
  • 没有Array的方法 (slice, pop, push...)
  • 使用索引存储数据
  • Array.isArray 返回false

伪数组存在的场景

  • 函数参数 (返回一个 Arguments的伪数组)

    1
    2
    3
    4
    5
    6
     function TestArray () {
       console.log(arguments)
       return arguments
     }
    
     TestArray(1, 2, 3, 4)
  • Dom 元素 (返回一个 HTMLCollection的伪数组)

    1
     document.getElementsByTagName('div')

伪数组转换正常数组的方法

  • Array.prototype.slice.call

    1
    2
     Array.prototype.slice.call(TestArray(1, 2, 3, 4))
     [].slice.call(TestArray(1, 2, 3, 4))
  • Array.from

    1
     Array.from(TestArray(1, 2, 3, 4))
  • Array.prototype.push.apply

    1
    2
     const newArr = Array.prototype.push.apply(TestArray(1, 2, 3, 4))
     const newArr = [].push(TestArray(1, 2, 3, 4))
上一篇 : d-video.js 视频播放器下一篇 : javascript需要注意的this指向问题