为什么我们需要在这里使用instanceOf,在这种情况下结果是真的?
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== 'function') {
// closest thing possible to the ECMAScript 5
// internal IsCallable function
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
fNOP = function() {},
fBound = function() {
return fToBind.apply(this instanceof fNOP
? this
: oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
//为什么我们需要在这里使用instanceOf };
if (this.prototype) {
// Function.prototype doesn't have a prototype property
fNOP.prototype = this.prototype;
}
fBound.prototype = new fNOP();
return fBound;
};
}
//哪种情况结果为真?
答案 0 :(得分:1)
我认为这与下面的问题重复,除了变量在2011年被问到时其命名略有不同之外,因此很容易注意到它:
mozilla's bind function question
请参阅该问题以获取完整的说明(如果您同意该答案,则可以回答该问题),但是关键是:
它允许您将绑定函数作为构造函数调用而不必绑定到原始对象。换句话说,如果您使用
new
进行调用,则“绑定”功能仍将像原始的未绑定版本一样工作。