怎样把function中的arguments变成普通数组
当我们在写一个具有处理可变长度参数的函数时,需要对arguments做一些操作。但是arguments它并不是一个数组,没有数组的各种操作,而且,JS的严格模式中不允许更改它的值。
这时我们需要将它的值拷贝到另一个地方。如果以这种方式:var a=arguments;操作的话a得到的只是一个引用,也就是浅拷贝,不能满足我们的需求。当然我们还可以:
var a=[];
for(var i=;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]
这样,我们在a中进行任何操作都不会影响arguments了,而且a现在为数组,可以进行任何的数组操作了
怎样把function中的arguments变成普通数组的更多相关文章
- JavaScript中的arguments,callee,caller
在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments: arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...
- 理解JavaScript中的arguments,callee,caller,apply
arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n] 参数function :选项.当前正在执行的 Function 对象的名字. n : ...
- 理解Javascript参数中的arguments对象
ECMAScript中函数没有标签名的特性,所以ECMAScript函数中没有重载. Javascript中arguments的存在可以弥补javascript中函数没有重载的不足. Javascri ...
- javascript的Function 和其 Arguments
http://shengren-wang.iteye.com/blog/1343256 javascript的Function属性:1.Arguments对象2.caller 对调用单前函数的Func ...
- 【拾遗】理解Javascript中的Arguments
前言 最近在看JavaScript相关的知识点,看到了老外的一本Javascript For Web Developers,遇到了一个知识盲点,觉得老外写的很明白很透彻,记录下来加深印象,下面是我摘出 ...
- JavaScript中通过arguments对象实现对象的重载
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 函数中的 arguments 对象
JavaScript函数具有像数组一样的对象,这些对象称为arguments,与传递给函数的参数相对应.传递给JavaScript函数的所有参数都可以使用arguments对象来引用. 现在我们开始学 ...
- 关于 js中的arguments 对象
arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推.这个对象只有在函数体内部,才可以使用. var f = fu ...
- 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...
随机推荐
- 在编辑模式中一个ASP.NET应用详细视图显示集合属性 编辑模式和只读模式
https://documentation.devexpress.com/#Xaf/CustomDocument3230
- acdreamoj1108(The kth number)
题目链接:http://acdream.info/problem? pid=1108 题意:n个数的数列,m次查询某个区间出现次数第k多的数出现的次数.n,m<=100000 解法:这个由于是离 ...
- 【iOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GameCenter 指南(实现仿官方的成就提示)、游戏接入OpenFeint指南;
本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi) 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-c ...
- Eclipse目录
1. 解决Ubuntu下的Eclipse打开Windows编写的java代码的中文乱码 2. Eclipse常用快捷键
- google使用技巧
- 小白日记50:kali渗透测试之Web渗透-CSRF
CSRF CSRF原理:经常与XSS混淆. 从信任的角度进行区分:XSS:利用用户对站点的信任:CSRF:利用站点对已经身份认证的信任(有一定的信任)[默认情况:站点不信任客户端] 结合社工在身份认证 ...
- C# 文本框 TextChanged 延时触发
public partial class DelayTextBox : TextBox { #region private globals private System.Timers.Timer De ...
- label添加手势(触摸改变其背景颜色)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
- C Struct Hack
It's not clear if it's legal or portable, but it is rather popular. #include <stdlib.h> #inclu ...
- nodejs的mysql模块学习(八)关闭连接池
关闭连接池 可以用pool.end()关闭连接池 pool.end(function (err) { // 所有的连接都已经被关闭 }); 当关闭之后pool将不可以getconnection()