考虑这段
代码,每行末尾有控制台
输出:
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