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