奇怪的 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
實際上定義了類型,而不是建構函式。