Дивний 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 насправді визначає тип, а не сама функція-конструктор.