解决方案 »

  1.   

    $().click()的参数是一个function,所以proxy方法要返回一个function方法,func.apply(thisObject, arguments);只是方法调用
      

  2.   

    proxy方法本身不就是一个function吗
      

  3.   

    proxy是函数
    proxy()是函数的执行。这样
    var proxy = function(func, thisObject){
    var a = func;
    var b = thisObject;
        return(function(){
            return a.apply(b, arguments);
        });
    }
      

  4.   

    如果仅仅是为了利用闭包,其实只需要第一个return。第二个return可以不要,但为了事件的bubble或者链式调用,留着没有坏处。
      

  5.   

    你吧 第2个  return 去掉(后面留着)看起来就会觉得顺眼了
      

  6.   

    proxy方法本身不就是一个function吗你这样改不是成闭包了吗?本身它只是匿名函数,不算闭包吧
      

  7.   

    能去掉吗,不影响使用?第二个return只是为了链式调用?
      

  8.   

    var x = function(){
    return true
    //return false
    //return;
    }$('.clicky').click(x);
      

  9.   

    function a(){
    return "aaaa";
    }var b = function(){

    return a();  //其实就是把a的返回值接住。然后当做自己的返回值。

    //==
    var r = a();
    return r;
    }
      

  10.   

    就你主贴的代码来说,有没有第二个return,wasClicked这个函数都会执行。只是你不知道这个函数的有没有返回值,返回值是什么,如果返回false,可能就是不希望事件冒泡,不加return,事件还会继续往上传。再通用一点,写proxy的这个人不知道它会被用作click的处理函数,所以第二个return也可以说是为了链式调用起效果而家的,为了func的返回值能被继续使用,但在你的主贴里的情况跟链式调用扯不上关系。这样说明白了吧?
      

  11.   


    第一个return是返回一个绑定有上下文环境的新函数, 
    第二个return是返回被绑定函数调用时返回的返回值。
    如果被绑定函数没有返回值,第二个return可以去掉。