语法:
fn.bind(obj,arg1,arg2,arg3...)
bind是es5新增的方法,顾名思义,它的作用是将函数绑定到某个对象上,就像是某个对象调用方法一样。其本质还是改变了该函数的上下文(context),它跟call和apply不一样的地方是,在调用之后会生成一个新函数。比如:
var x = y = ,
function fn(){
return this.x + y;
}
var obj = {x:};
var obj1 = fn.bind(obj);
obj1();//
而es3中却没有此方法,我会这样去实现:
function bind(obj, fn) {
return function () {
return fn.apply(obj, arguments);
};
}
如果想要是每个函数都使用bind的方法可以这样:
if(!Function.prototype.bind){
Function.prototype.bind = function(obj) {
var that = this;
return function () {
return that.apply(obj, arguments);
};
}
}