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,所以伪数组转化成了数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值