奇怪的 instanceof
重要性:5
在下面的代码中,为什么 instanceof 返回 true?我们可以很容易地看到 a 不是由 B() 创建的。
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
是的,看起来确实很奇怪。
但是 instanceof 不关心函数,而是关心它的 prototype,它会与原型链进行匹配。
这里 a.__proto__ == B.prototype,所以 instanceof 返回 true。
因此,根据 instanceof 的逻辑,prototype 实际上定义了类型,而不是构造函数。