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

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

?

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

Arguments

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

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

说明

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

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

???var?expargs?=?ArgTest.length;???????