类数组对象,意思就是说:表面上看起来是数组,但内在却不是数组。在Javascript语言中,我们会碰到许多这样的类数组对象。其中最典型的便是function中的arguments。
function add(a, b) {
var args = arguments;
console.log(args); // => [3, 4]
console.log(Object.prototype.toString.call(args)); // => [object Arguments]
console.log(args.length); // => 2
console.log(args.slice); // => undefined
return a + b;
}
add(3, 4);
我们发现,当我们去打印arguments的类型时,浏览器输出了[object Arguments]
,并且在arguments对象中,slice方法都没有,这说明argument对象确实不是数组,而是一个类数组对象。为了享受数组的那些便捷方法,所以我们需要将类数组对象转换成真正的数组对象。
通常来说,只要[].slice.call就能转换了。
function toArray(arrayLike) {
return [].slice.call(arrayLike);
}
网友评论