ES5 实现bind 为什么要 this instance bound

Function.prototype.bind =  function(that){

        var self = this,

            args = arguments.length > 1 ? Array.slice(arguments, 1) : null,

            F = function(){};


        var bound = function(){

            var context = that, length = arguments.length;

            if (this instanceof bound){

                F.prototype = self.prototype;

                context = new F;

            }

            var result = (!args && !length)

                ? self.call(context)

                : self.apply(context, args && length ? args.concat(Array.slice(arguments)) : args || arguments);

            return context == that ? result : context;

        };

        return bound;

    },

一般使用上述方法通过ES5实现bind函数,我不太明白为什么在bound函数中,

if (this instanceof bound) 是什么原因才需要做这样的判断?


一只名叫tom的猫
浏览 344回答 1
1回答

郎朗坤

new (Fn.bind(null));生成一个绑定方法的实例时,会进入这个判断。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript