Array.from 和 Array.prototype.slice.call 转换类数组的区别
都可以转换类数组为新的数组,Array.from 是 ES6 的新语法
当 Array.from 遍历类数组对象时,如果当前项不存在,它会将该位置的值设置为 undefined。这是因为 Array.from 的实现方式是遍历类数组对象,依次将每个元素添加到新数组中,对于不存在的项,它会在新数组中用 undefined 来占位。
而 Array.prototype.slice.call 的实现方式是调用 Array 原型上的 slice 方法,这个方法会从类数组对象中截取一段连续的值,如果当前项不存在,它就会在结果数组中跳过该位置,不会在结果数组中占位,因此结果数组中该位置就是 empty。
const arrLikeObject = { 0: 'a', 1: 'b', 3: 'd', length: 4 }; const arr1 = Array.from(arrLikeObject); const arr2 = Array.prototype.slice.call(arrLikeObject); console.log(arr1); // ['a', 'b', undefined, 'd'] console.log(arr2); // ['a', 'b', 'd']
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 原型属性 和 包装对象
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论