美文网首页
javascript中的伪数组

javascript中的伪数组

作者: 这里王工头 | 来源:发表于2019-01-28 00:44 被阅读0次

欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~

什么是伪数组

假如有这样一段代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <ul id = 'ul'>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
<script>
    var liArr = document.getElementById('ul')
    console.dir(liArr.children)
</script>
</html>

去看控制台看看

伪数组

上图就是一个伪数组,长相很像数组,但是将他的原型_proto_打开看看,它没有数组的spliceconcatpop等方法

proto

特点

  1. 具有length属性
  2. 按索引方式存储数组
  3. 不具有数组的方法

将伪数组转化为真数组

可以通过call或者apply的方法,将伪数组转化为真数组

Array.prototype.slice.call(liArr.children)
// Array.prototype.slice.apply(liArr.children)
真伪数组转换

原理

借用数组原型方法

var arr = Array.prototype.slice.call(liArr.children);
 
Array.prototype.forEach.call(liArr.children, function(v) {
  // 循环liArr.children对象
});

// push
// some
// every
// filter
// map
// ...

可以简化为

Array.prototype.slice.call(liArr.children) 
// 此时已经改变了 this 指向,使得 liArr.children 拥有了真数组的原型方法

总结

  1. 伪数组没有数组 Array.prototype 的属性值,类型是 Object ,而数组类型是 Array
  2. 数组是基于索引的实现, length 会自动更新,而对象是键值对
  3. 使用对象可以创建伪数组,伪数组可以利用call或者apply很方便的转化为真数组

相关文章

  • 前端常见面试题十七

    目录: 怎样添加、移除、复制、创建、查找节点 在JavaScript中什么是伪数组?如何将伪数组转化为标准数组 j...

  • 原生js面试题(一)

    目录: 怎样添加、移除、复制、创建、查找节点 在JavaScript中什么是伪数组?如何将伪数组转化为标准数组 j...

  • JavaScript 数组与伪数组简介

    JavaScript-数组与伪数组简介 本文章面向小白 数组与伪数组的概念 数组与伪数组从何而来在JavaScri...

  • 【IMWeb秋招训练营】【Day3】面试题总结

    经典面试题 9.在Javascript中什么是伪数组?如何将伪数组转化为标准数组? 具有length属性 按索引方...

  • 前端常见面试题(十)

    目录: 1,简述同步和异步的区别 2, 数组去重(手写代码) 3, 在JavaScript中什么是伪数组?如何将伪...

  • javascript中的伪数组

    欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~ 什么是伪数组...

  • javascript中的伪(类)数组

    1.什么是伪数组? 伪数组(ArrayLike)又称类数组,虽然从名字上来看,貌似和数组很像,但实际上和数组有很大...

  • 关于javascript中的伪数组

    1、什么是js伪数组? 请看下面一段代码: 控制台输出: 上图就是一个伪数组,长相很像数组,但是将他的原型 _pr...

  • 2018-04-22

    javascript基础 一.函数的arguments 伪数组:像数组,但不是数组 可以动态添加参数 二.函数的其...

  • Javascript常用小技巧

    收集汇总平时开发过程中的 Javascript 常用小技巧和方法。如:伪(类)数组转数组、获取数据类型、生成随机I...

网友评论

      本文标题:javascript中的伪数组

      本文链接:https://www.haomeiwen.com/subject/ssjojqtx.html