Javascript类数组对象

类数组对象,意思就是说:表面上看起来是数组,但内在却不是数组。在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);
}

你可能感兴趣的:(Javascript类数组对象)