我无法理解Array.prootype.slice.call
I can't understand Array.prootype.slice.call
temp = {0:'one', 1:'two', 2:'three', 3:'four',length:4};
console.log( Array.prototype.slice.call( temp, 1));
//["two", "three", "four"]
为什么会这样呢?length
物业在哪里?叫Array.prototype.slice.call( temp, 1)
的时候不应该["two", "three", "four", 4]
吗?
切片的简化版本:
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
的对象)上的工作方式
相关文章:
- 使用angularjs数组中的slice
- 使用.slice分页选择了太多项目
- getDate() slice() confusion
- 转换类似数组的对象Array.prototype.slice或Array.from
- 具有负值的Javascript字符串.slice()
- 为什么要将Array.prototype.slice.call与参数一起使用
- Array.slice on array with one element
- 将 JavaScript Array.slice + 隐式扩展转换为 C++ vector
- Javascript:使用 slice() 从数组中选择除一个项目之外的所有项目
- [].slice vs Array.prototype.slice
- 函数与使用slice的参数一起应用
- Jquery使用Slice将前N个元素包装成一个新元素,并将其余N个元素打包成另一个新元素
- NodeJS buffer.slice()不是函数
- Array.prototype.slice.call如何在getElementsByClassName的重新创建中工作
- 限制使用slice函数自动完成jquery ui的结果数
- KendoUI TreeView试图将脏属性添加到Poco并获取Uncaught TypeError:e.slice不是
- 为什么Javascript库对数组方法(push,slice等)有本地引用
- the meaning of jQuery javascript: Array.prototype.slice.call
- jQuery slice() 方法 在 html 中选择元素(第一个/最后一个)
- 我无法理解Array.prootype.slice.call