鍍金池/ 問答/HTML/ ES5 實現(xiàn)bind 為什么要 this instance bound

ES5 實現(xiàn)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實現(xiàn)bind函數(shù),我不太明白為什么在bound函數(shù)中,
if (this instanceof bound) 是什么原因才需要做這樣的判斷?

回答
編輯回答
別硬撐
new (Fn.bind(null));

生成一個綁定方法的實例時,會進入這個判斷。

2017年5月23日 20:10