js數組的原型slice原理

假設空數組的原型slice方法爲testSlice

Array.prototype.testSlice = function () {
var start = 0
var end = this.length
if (arguments.length === 1) {
start = arguments[0]
} else if (arguments.length === 2) {
start = arguments[0]
end = arguments[1]
}
var arr = []
for (var i = start; i < end; i++) {
arr.push(this[i]) //此時這個this爲arguments
return arr
}
var arguments = {
0: '我',
1: '是',
2: '僞數組',
length: 3
}
[].testSlice.call(arguments);


這樣就一目瞭然了,[].testSlice.call(arguments),即空數組調用了testSlice函數,只不過也改變了this的指向,此時這個this爲arguments,那arr.push(this[i])==arr.push(arguments[i]),arr是函數裏的新建的空數組 ,函數裏把僞數組的元素賦值給arr數組,返回值是arr,所以僞數組轉化成了數組。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章