奇怪的 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
实际上定义了类型,而不是构造函数。