日期:2014-05-16  浏览次数:20371 次

全面理解javascript的caller,callee,call,apply概念(修改版)

在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments

Arguments

该对象代表正在执行的函数和调用它的函数的参数。

[function.]arguments[n]

?

?

?


参数 function :选项。当前正在执行的 Function 对象的名字。 n :选项。要传递给 Function 对象的从0开始的参数值索引。

?

?

?


说明

Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用。下边例子详细说明了这些性质:
callee

//arguments?对象的用法。
function?ArgTest(a,?b){
???
var?i,?s?=?"The?ArgTest?function?expected?"
;
???
var?numargs?=?arguments.length;?????//?获取被传递参数的数值。

???var?expargs?=?ArgTest.length;???????//?获取期望参数的数值。
???if?(expargs?<?2)
??????s?
+=<