猿问

实现bind作为new调用时this会失效的问题?

看了一个大佬写的:


Function.prototype.bind = Function.prototype.bind || function (context) {

    var me = this;

    var args = Array.prototype.slice.call(arguments, 1);

    var F = function () {};

    F.prototype = this.prototype;

    var bound = function () {

        var innerArgs = Array.prototype.slice.call(arguments);

        var finalArgs = args.concat(innerArgs);

        return me.apply(this instanceof F ? this : context || this, finalArgs);

    }

    bound.prototype = new F();

    return bound;

}

这个是怎么做兼容的啊,大佬尽量讲详细点。还有bind this失效的具体场景?


HUX布斯
浏览 308回答 1
1回答

慕哥6287543

bind第一个参数是上下文,也就是this指向,其余的参数是后续要传给待绑定的函数的参数,可以是部分,也可以是全部里面声明了一个函数,这个函数是需要返回的;需要重新设置它的原型链,指向原来的函数的原型链;这个函数就是绑定好的函数,这个函数需要把传来的参数与先前的参数拼在一起,然后在绑定的上下文调用不清楚你所说的this失效是什么
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答