javascript 的函数调用过程中的arguments,callee,caller,apply,call

function f(){

}

通过以上函数说明下各个参数:

arguments:像是数组,但不是数组,可以通过Object.prototype.toString.call(arguments)返回值可知,如果是数组返回为'object Array',但真正返回的是'object Object',arguments.length为实际调用函数时候实际传递的参数个数,函数定义时候的参数个数可以通过f.length。要获取调用参数的数组,如果浏览器为非IE可以通过Array.prototype.slice(arguments,0)获取,若为IE浏览器,则通过以下方法。

function toArray(arr){
var res =[];
for(var i = 0;i < arr.length;i ++)
res.push(arr[i]);
return res;
}

callee:主要用于获取匿名函数引用,通过arguments.callee获取,通过它可以很方便的实现递归,如下

function sum(n){
if(n == 1)
return 1;
else return n + arguments.callee(n -1);
}

caller:该函数的函数调用者的函数名,如果函数调用者的上下文为window,则该参数返回null,获取方式可以通过f.caller,若函数为匿名函数,可以通过arguments.callee.caller

apply:调用方式为f.apply(context,arrayArgs),通过将函数调用者上下文 设为context,arrayArgs的类型必须为数组

call:调用方式为f.call(context[,arg1][,arg2]),与apply相似,两者的不同仅为调用参数的不同

转载请说明出处 blog.csdn.net/ls5231


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值