function curry() {
    if (!arguments.length) return this;
    var __method = this, args = $A(arguments);
    return function() {
      return __method.apply(this, args.concat($A(arguments)));
    }
  }
AA.curry(1,3,4,5)

解决方案 »

  1.   


    function curry() {
        if (!arguments.length) return this;
        var __method = this, args = Array.prototype.slice.call(arguments,0);
        return function() {
          return __method.apply(this, args.concat($A(Array.prototype.slice.call(arguments,0))));
        }
      }
    AA.curry(1,3,4,5)
      

  2.   

    楼主要多看看js啊,纠正下你的代码。你的第一种方式定义是最常见的。以关键字function开头,后面跟上函数名,括号里是参数,大括号是要执行的代码块。另外,函数名一般以小写开头。
    function AA(){
        //your code
    }你想写的第二种定义方式应该是这样
    var AA = function()
    {

    记住,不要写成AA(),小括号是运算符,代表函数的执行。也叫函数直接量,将一个没有命名的函数(匿名函数)赋给一个变量(AA),或者说AA这个引用指向了后面的函数。后面的代码就可以用AA()去调用这个函数了。直接在<script type="text/javascript"></script>中定义的函数就是全局函数。全局函数默认是window对象的属性(或者叫window对象的方法)。
    局部函数可以这样理解,函数的嵌套,里面的函数就是局部函数。而嵌套函数最容易产生闭包,呵呵,闭包比较难理解。不扯了。举个例子,不用解释了吧,里面的就是你说的局部函数。
    function outerFun() { 
        function innerFun() { 
           alert('hello'); 
       }
    }
    innerFun()就是一个内部函数,包含在outerFun()的作用域中。这意味着在outerFun()里调用innerFun()是可行的,而不是在outerFun()外面调用。
    另外将一个函数赋值给一个非window对象的属性,这个函数也是局部函数。
    好了,就说这么多了。js的function非常特殊,它可以作为对象(象数字、字符串、对象、数组,每个function都有自己的一些属性和方法),可以作为对象的方法,作为构造函数去模拟类。
      

  3.   

    js的function非常特殊,它可以作为对象(象数字、字符串、对象、数组,每个function都有自己的一些属性和方法),可以作为对象的方法,作为构造函数去模拟类。 
      

  4.   

    上面两种方法都是全局函数
    不过你第二种写发本身就有错误.
    应该这样写
    var aa = function(){alert(1);}
    如果有实名参数可以这样写
    var aa = function(str){alert(str);}
    匿名参数的话
    var aa = function(){
       var s = "";
       s += "The individual arguments are: "
       for (n=0; n< arguments.length; n++){
          s += ArgTest.arguments[n];
          s += " ";
       }
       alert(s);
    }
    aa(1, 2, "hello", new Date());