temp = {0:'one', 1:'two', 2:'three', 3:'four',length:4};
console.log( Array.prototype.slice.call( temp, 1));
//["two", "three", "four"]
为什么会这样呢?
length
属性在哪里?调用["two", "three", "four", 4]
时不应该是Array.prototype.slice.call( temp, 1)
吗? 最佳答案
切片的简化版本:
Array.prototype.slice = function(a, b) {
a = a || 0
if (a < 0) a += this.length
b = b || this.length
if (b < 0) b += this.length
var ret = []
for (var i = a; i < b; i++)
ret.push(this[i])
return ret
}
因此,实际上分片函数使用
[]
运算符和.length
上的this
属性。这就是它对数组和类似数组的对象(具有[]
和.length
的对象)的工作方式关于javascript - 我不明白Array.prootype.slice.call,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35247861/