考虑兼容性对bind进行了判断,ECMAScript 5 还定义了一个方法:bind(),支持的浏览器不多
apply之所以要放在一个函数里面是因为bind是返回一个函数表达式,而apply方法是立即执行函数,所以需要把apply放在一个函数里面,return了以后不会立即执行,到调用的时候再立即执行。
function bindThis(f, oTarget) {
if (f.bind){
return f.bind(oTarget);
} else {
return function(){
return f.call(oTarget,arguments);
}
}
}
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
bind:返回一个原函数的拷贝,并拥有指定的this值和初始参数。
apply()和 call()。设置函数体内 this 对象的值,并执行函数
/*apply()方法*/
function.apply(thisObj[, argArray])
/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);