伪数组与数组

数组和伪数组的区别

  1. 伪数组是一个对象(Object),而真实的数组是一个数组(Array)也是对象

  2. 拥有length属性,且必须是number类型,其它属性(索引)为字符串

  3. 不具有数组所具有的方法,forEach()等,不过有Object的方法

  4. 伪数组长度不可变,真数组长度可以变

  5. 可以通过for in遍历

  6. 伪数组没有Array.prototype,它只是一个对象

判断是否是数组

Array.isArray(arr) //true

arr instanceof Array //true

常见的伪数组

  1. 参数数组:arguments
  2. DOM对象列表HTMLCollection():比如通document.getElementsByTagName得到的列表
  3. jquery对象:比如$(“div”)

伪数组存在的意义

让一些对象也可以使用数组方法,可以通过call() bind() apply()方法实现

  • 注意,方法的返回值类型不会改变,返回数组的还是会返回数组

伪数组转换为真数组

  1. 使用ES6中的Array.from方法

  2. 使用扩展运算符,也是ES6的语法

  3. 使用Array.prototype.slice.call();

    arr = Array.prototype.slice.call(fakeArray)

  4. 使用[].slice.call()

    var arr = [].slice.call(fakeArray)

 


posted @ 2022-08-09 09:54  清水紅葉  阅读(79)  评论(0编辑  收藏  举报