如何将对象作为数组传递给切片

时间:2014-01-14 18:30:38

标签: javascript

我找到了关于javascript的link,在这里我了解call将如何运作

在链接中,这些人提供了以下示例。

var anArrayLikeObj = {0:"Martin", 1:78, 2:67, 3:["Letta", "Marieta", "Pauline"], length:4 }
Array.prototype.slice.call (anArrayLikeObj, 0)

以下列方式获得输出。

["Martin", 78, 67, Array[3]

他们提供什么,它工作得很好。为了我的理解目的,我用以下方式修改了对象(anArrayLikeObj)。

var anArrayLikeObj = {0:"Martin", 1:78, 2:67, 3:["Letta", "Marieta", "Pauline"]}
Array.prototype.slice.call (anArrayLikeObj, 0)

获取输出emptyArray([])。所以我不明白两者都是对象,唯一不同的属性length。因为它不能解决我的问题。

有什么理由吗?

1 个答案:

答案 0 :(得分:3)

JavaScript中的术语array-like指的是具有非负整数属性和数字length属性的对象。因此,您的第二个对象不是类似数组的。

请注意,Array.prototype.slice正在使用length中提供的 值来确定对象中有多少元素。无论对象的实际大小如何,更改该值都会创建不同的输出。