js apply call

1.       var obj = {name:'小李',age:18}

 2.      test.apply(obj,[arguments]);

 3.      function test(){

 4.      }

     3行将调用test方法,将test 的this指针引用obj对象,参数被arguemnts替换

call的arguemnts 为array数组

A.caller 返回调用A函数的函数

callee 

callee

    返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。

[function.]arguments.callee
可选项 function 参数是当前正在执行的 Function 对象的名称。

说明

callee 属性的初始值就是正被执行的 Function 对象。

callee 属性是 arguments 对象的一个成员,他表示对函数对象本身的引用,这有利于匿名
函数的递归或确保函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性
仅当相关函数正在执行时才可用。更有需要注意的是callee拥有length属性,这个属性有时候
用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是
形参长度,由此能判断调用时形参长度是否和实参长度一致。

示例


//callee能打印其本身
function calleeDemo() {
    alert(arguments.callee);
}
//用于验证参数
function calleeLengthDemo(arg1, arg2) {
    if (arguments.length==arguments.callee.length) {
        window.alert("验证形参和实参长度正确!");
        return;
    } else {
        alert("实参长度:" +arguments.length);
        alert("形参长度: " +arguments.callee.length);
    }
}
//递归计算
var sum = function(n){
  if (n <= 0)                        
  return 1;
  else
    return n +arguments.callee(n - 1)
}

你可能感兴趣的:(js apply call)