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) 是什么原因才需要做这样的判断?
添加回答
举报
0/150
提交
取消