研究插件代码发现了一段代码,如下:
_bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; } (apply作用自行百度)
当时觉得很纳闷,为什么不这样写 _bind = function(fn, me){ return fn.apply(me, arguments); }
后来研究了下,发现插件中的代码可以写成
_bind = function(fn, me){
var fn2=function(){
return fn.apply(me,arguments)
}
return fn2;
}
是的,这段代码意思是返回了一个改变自身方法this指向的一个方法。(多用于回调方法中改变this指向)
而_bind = function(fn, me){ return fn.apply(me, arguments); } 仅仅是返回结果,并没有返回方法。
这段代码一般用于想改变一个方法内部this指向。如:
$(document)['on']('click',clicked); //绑定点击事件
clicked:function(event){
console.log(this); //这里是指向你点击的元素
}
clicked=_bind(clicked,window); //改变this指向
clicked:function(event){
console.log(this); //这样就指向了window
}
如有问题!欢迎提出纠正。