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)
吗?
答案 0 :(得分:3)
切片的简化版本:
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
的那些对象)上工作的方式