应该是写错了,callee是arguments的成员,这里的this应该调用不了

解决方案 »

  1.   

    函数怎么克隆啊??? 用上面的也不行啊~
    可以这样调用 例如:
    var a=function(){alert("ss")}
    var b=a.Clone()
    alert(b==a)//要弹出false
    b()//要弹出ss上面的代码怎么改改?
      

  2.   

    克隆函数你试试这样:var a = function(){alert('')};var f = a.toString();// 这里把1头尾的function(){  和 } 截掉var b = new Function(f);当然这是一个土方法
      

  3.   

    上述代码中提到的对arguments的快速处理的目的应该是解决在函数体中arugments虽然具有数组的特性但不是Array的实例这个问题:var test = function(){
      alert(arguments.constructor == Array);  //false说明不是Array的实例,所以在克隆函数中不会进到 case Array 的分支中}所以,为了解决在函书体中对 arguments.clone(),故加入了 if("function" == typeof this['callee']) return Array.apply(null, this);
    这样就理解的通了
      

  4.   

    因为arguments对象固有的性质,它具有arugments.callee,指向所在方法本身。而对arguments的克隆正是返回一个与自己相同的数组故return Array.apply(this) ,这个和 return new Array(this)基本上是一样的。