模拟bind实现

bind介绍

bind()方法会创建一个新的函数,当这个新函数被调用时,bind()的第一个参数将作为它运行时的this,之后的一序列参数将会在传递的实参前传入作为它的参数。

模拟bind实现

/**
* 模拟bind实现
*/
Function.prototype.simulateBind = function (context) {
    if (typeof this !== 'function') {
        throw new Error('Function.prototype.bind - what is trying to be bound is not callable');
    }
    var self = this;
    var args = Array.prototype.slice.apply(arguments, 1);
    var fNOP = function () {};
    var fbound = function () {        
        self.apply(this instanceof self ? this : context, args.concat(Array.prototype.slice.call(arguments)));
    }
    fNOP.prototype = this.prototype;
    fbound.prototype = new fNOP();
    return fbound;
}

参考资料

  1. juejin.im/post/59093b…

微信公众号“前端那些事儿”

发布了71 篇原创文章 · 获赞 43 · 访问量 79万+

猜你喜欢

转载自blog.csdn.net/cengjingcanghai123/article/details/104452334