我在网上看到有人写这样的js代码[].slice.call(arguments)?

[].slice.call(arguments)不知道什么意思call方法仔细看了下教程,明白了,arguments是参数的一个数组,[]表示空数组,就是说argumen... [].slice.call(arguments)不知道什么意思call方法仔细看了下教程,明白了,arguments是参数的一个数组,[]表示空数组,就是说arguments继承了空数组的slice方法,但怎么就返回了不一样的值呢? 展开
 我来答
匿名用户
2013-07-13
展开全部
这句话相当于Array.slice.call(arguments),目的是将arguments对象的数组提出来转化为数组,arguments本身并不是数组而是对象
百度网友e4569140d6
2018-09-20 · TA获得超过644个赞
知道小有建树答主
回答量:200
采纳率:100%
帮助的人:64万
展开全部
假设空数组的原型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,所以伪数组转化成了数组。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式