语法:
fn.bind(obj,arg1,arg2,arg3...)
bind是es5新增的方法,顾名思义,它的作用是将函数绑定到某个对象上,就像是某个对象调用方法一样。其本质还是改变了该函数的上下文(context),它跟call和apply不一样的地方是,在调用之后会生成一个新函数。比如:
var x = y = 2, function fn(){ return this.x + y; } var obj = {x:1}; var obj1 = fn.bind(obj); obj1();//3
而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); }; } }