数组和为数组的区别

本文探讨了伪数组的特性,如arguments和DOM children,它们如何类似数组但存在__proto__区别。讲解了判断伪数组的方法、将其转换为数组的两种方式(扩展运算符和Array.from),并介绍了如何利用Array.prototype.call处理伪数组调用数组方法的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.伪数组的介绍

伪数组我们可以理解为类似数组的一个集合,我们常见的有俩个,一个是arguments还有一个是DOM的children属性,获取回来的子节点集合。他们与数组一样,具有索引(下标)和length属性。可以通过for循环写循环语句去循环遍历。我们可以简单看一下伪数组的样子:

伪数组和数组的区别在于__proto__

2.如何判断伪数组?

使用 Array.isArray(value)

3.伪数组如何转换为数组?

//1.使用扩展运算符
 function a() {
  let b = arguments;
  //使用扩展运算符 转化为数组
  let d = [...b];
  console.log(Array.isArray(d));//true
 }
 a()


 //2.使用 es6 新增的 Array.from  静态方法
 function a() {
  let b = arguments;
  let d = Array.from(b);
  console.log(Array.isArray(d)); //true
 }
 a()

4.数组解析

  //解析数组
  let arr = [1, 2, 3, 4];
  let s = [];
  s.push(arr) //[[1,2,3,4]]
  //解析数组
  s.push(...arr) //[[1,2,3,4],1,2,3,4]

5.伪数组怎么调用 数组的方法?

Array.prototype 里面的所有数组方法都有 一个 call 方法,call 方法第一个参数是 伪数组

  let isTrue = true
  let a = 'a'
  let b = 'b'
  let c = 'c'
  foo(a, b, c)
  //假设我们要使用 除了 isTrue 外 所有的 参数
  //但是 arguments 是伪数组,没有继承 Array
  //那怎么操作呢?
  function foo(isTrue) {
   let args = Array.prototype.slice.call(arguments, 1, 3)
   console.log(args); //['b', 'c']
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值