javascript Function.prototype.bind

语法: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);
        };
    }
}
相关文章
相关标签/搜索