javascript – Array.prototype.slice奇怪的行为

前端之家收集整理的这篇文章主要介绍了javascript – Array.prototype.slice奇怪的行为前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑这段代码,每行末尾有控制台输出
function whatever() {
  console.log(arguments) // { '0': 1,'1': 2,'2': 3,'3': 4,'4': 5 }
  console.log(Array.prototype.slice.call(arguments)) // [ 1,2,3,4,5 ]
  console.log(Array.prototype.slice.call({ '0': 1,'4': 5 })) // []
}

whatever(1,5)

为什么第三个console.log输出一个空数组?

解决方法

因为为了使Array.prototype.slice工作,您需要传递一个类似数组的对象.并且为了使对象适合该类别,它需要一个length属性,而您的对象没有该属性.试试这个:
var arr = { '0': 1,'4': 5 };
arr.length = 5;
var res = Array.prototype.slice.call(arr);
console.log(res);

FIDDLE

猜你在找的JavaScript相关文章