保持this上下文环境方法,为什么要两个return javascriptfunctionthisproxy 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $().click()的参数是一个function,所以proxy方法要返回一个function方法,func.apply(thisObject, arguments);只是方法调用 proxy方法本身不就是一个function吗 proxy是函数proxy()是函数的执行。这样var proxy = function(func, thisObject){ var a = func; var b = thisObject; return(function(){ return a.apply(b, arguments); });} 如果仅仅是为了利用闭包,其实只需要第一个return。第二个return可以不要,但为了事件的bubble或者链式调用,留着没有坏处。 你吧 第2个 return 去掉(后面留着)看起来就会觉得顺眼了 proxy方法本身不就是一个function吗你这样改不是成闭包了吗?本身它只是匿名函数,不算闭包吧 能去掉吗,不影响使用?第二个return只是为了链式调用? var x = function(){ return true //return false //return;}$('.clicky').click(x); function a(){ return "aaaa";}var b = function(){ return a(); //其实就是把a的返回值接住。然后当做自己的返回值。 //== var r = a(); return r;} 就你主贴的代码来说,有没有第二个return,wasClicked这个函数都会执行。只是你不知道这个函数的有没有返回值,返回值是什么,如果返回false,可能就是不希望事件冒泡,不加return,事件还会继续往上传。再通用一点,写proxy的这个人不知道它会被用作click的处理函数,所以第二个return也可以说是为了链式调用起效果而家的,为了func的返回值能被继续使用,但在你的主贴里的情况跟链式调用扯不上关系。这样说明白了吧? 第一个return是返回一个绑定有上下文环境的新函数, 第二个return是返回被绑定函数调用时返回的返回值。如果被绑定函数没有返回值,第二个return可以去掉。 getJSON参数URL问题 在Firefox浏览器下,如何用js清空剪切板呢? 在下拉框里选择这个学号后,就从数据里边把数据读后作为一个DIV层显示出来,请前辈指点! js魔力代码问题 调试下代码提示“未结束的字符串常量”,请帮助! 关于js ff浏览器兼容innerText的问题 如何用下拉框实现这样的功能,请教!,在线等! 如何禁用多选框! history.back()和表单的问题 列表在页面上怎么实现删除 手机浏览器地址栏隐藏后就不在显示 当点击 向上的按钮时,显示 行: 83 错误: “mariomove”未定义,谁能帮帮我。
proxy()是函数的执行。这样
var proxy = function(func, thisObject){
var a = func;
var b = thisObject;
return(function(){
return a.apply(b, arguments);
});
}
return true
//return false
//return;
}$('.clicky').click(x);
return "aaaa";
}var b = function(){
return a(); //其实就是把a的返回值接住。然后当做自己的返回值。
//==
var r = a();
return r;
}
第一个return是返回一个绑定有上下文环境的新函数,
第二个return是返回被绑定函数调用时返回的返回值。
如果被绑定函数没有返回值,第二个return可以去掉。