概述
argument
在了解arguments对象之前先看一下javascript的一些功能:
Javascript并没有重载函数的功能,而arguments对象能够模拟重载。
Javascrip中每个函数都会有一个arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素;
arguments.length为函数实参个数,arguments.callee引用函数自身;
arguments他的特性和使用方法:
特性:
arguments对象和Function是分不开的,因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。
使用方法:
arguments对象并不是一个数组,但是它访问单个参数的方式与访问数组元素的方式相同。
例:arguments[0],arguments[1],。。。arguments[n];
在js中 不需要明确指出参数名,就能访问它们:
function test() {
var s = "";
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
s += arguments[i] + ",";
}
return s;
}
test("name", "age");
输出结果:
name,age
每一个对象都有自己的属性,arguments对象也不例外;
首先arguments的访问和Array对象一样,用0到arguments.length-1来枚举每一个元素。
下面我们来看看callee属性,返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用;callee 属性的初始值就是正被执行的 Function 对象。
实现匿名的递归函数:
var sum = function (n) {
if (1 == n) {
return 1;
} else {
return n + arguments.callee(n - 1);
}
}
alert(sum(6));
输出结果:21
arguments对象大多用来针对同个方法多处调用并且传递参数个数不一样时进行使用。根据arguments的索引来判断执行的方法。
当使用arguments进行函数传递时,有一些需要注意的点:
var length = 10;
function fn() {
console.log(this.length);
}
var obj = {
method: function(fn) {
fn();
arguments[0]();
}
};
obj.method(fn, 1);
输出:10,2
fn函数里面的this的指向:
①第一个值为10,执行的是method里面的第一行"fn()",这里this指向的window。所以输出的值为最外层定义的length;
②第二个值为2,执行的是method里面的第二行"arguments[0]()"(arguments[0]() => fn()),这里this执行的是arguments这个对象,所以输出值是arguments的长度;
最后
以上就是悦耳毛衣为你收集整理的argument的全部内容,希望文章能够帮你解决argument所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复