网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 时尚美容

Array.from(arr)和[...arr]的区别

时间:2024-10-13 01:40:25

1、对于数组类型的数据,Array.from(arr)和[...arr]都能实现深拷贝的效果。

Array.from(arr)和[...arr]的区别

2、对于类数组对象,Array.from(arr)和[...arr]也都能将其转化为数组,如下图。

Array.from(arr)和[...arr]的区别

3、类数组对象的特点有以下四点:1.有数字索引2.有长度3.是个对象4.能被迭代展开我们刚刚获取的pList 这个类数组对象,可以很清楚的看到这4个特点。

Array.from(arr)和[...arr]的区别

4、对于类数组对象的前3个特性,我们都很熟悉,但是对于第蚵播噍疸四个特性,能被迭代应该如何理解呢?继续展开,我们可以看到原型链上有一个[Symbol.iterator]属性指向该对象的默认迭代器方法。为了用实例看出2种方法的区别,我们先手动创建一个带迭代的对象。

Array.from(arr)和[...arr]的区别

5、根据类数组对象的特点,声明一个对象,但是暂时没有迭代器属性和迭代器方法。然后分别用Array.from(arr)和[...arr]输出一下结果,发现[...arr]会报错。

Array.from(arr)和[...arr]的区别

6、接下来写一个迭代器,可以参考es6教程中的迭代器篇。然后再用Array.from(arr)和[...arr]输出一下结果,发现这回都能正常输出。因此Array.from烫喇霰嘴(arr)和[...arr]的区别就是在转换类数组对象时,如果不含迭代器属性和方法,那么[...arr]这种转换方法会报错!

Array.from(arr)和[...arr]的区别

7、而报错的根本原因就是:对于那些没有部署 Iterator 接口的类似数组的对象,扩展运算符就无法将其转为真正的数组。

Array.from(arr)和[...arr]的区别
© 2025 小知经验
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com