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) 是什么原因才需要做這樣的判斷?
ES5 實現bind 為什么要 this instance bound
一只名叫tom的貓
2019-03-19 17:15:09