javascript Function.prototype.bind

语法:

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);
        };
    }
}

 

posted on 2015-04-25 23:18  复读机  阅读(462)  评论(0编辑  收藏  举报

导航