首页 > 网站 > WEB开发 > 正文

怎样把function中的arguments变成普通数组

2024-04-27 14:17:00
字体:
来源:转载
供稿:网友

怎样把function中的arguments变成普通数组

当我们在写一个具有处理可变长度参数的函数时,需要对arguments做一些操作。但是arguments它并不是一个数组,没有数组的各种操作,而且,JS的严格模式中不允许更改它的值。

这时我们需要将它的值拷贝到另一个地方。如果以这种方式:var a=arguments;操作的话a得到的只是一个引用,也就是浅拷贝,不能满足我们的需求。当然我们还可以:

var a=[];for(var i=0;i<arguments.length;i++){    a.push(arguments[i]);}

但是,显然这种方法比较繁琐,得用循环来操作;

我们想到数组里面有一个slice方法经常用来做数组的拷贝,但是aruments没有这个方法。我们又想到可以通过call来给一个方法来指定方法的接收者;

由于aruments是一个类数组对象(有一组值和一个length属性来表示它的长度),我们可以借用数组的方法来进行操作:

var a=[].slice.call(argments);

完整代码:

function test(){  var a=[].slice.call(arguments);  console.log(a);}test(1,2,3,4,5,6);//[1,2,3,4,5,6]

这样,我们在a中进行任何操作都不会影响arguments了,而且a现在为数组,可以进行任何的数组操作了


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表