Podivné instanceof
důležitost: 5
ProÄ v následujÃcÃm kódu instanceof vracà true? VidÃme pÅece, že a nenà vytvoÅeno pomocà B().
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
Ano, urÄitÄ to vypadá podivnÄ.
Ale instanceof se nezajÃmá o funkci, nýbrž jen o jejà prototype, který porovnává s prototypovým ÅetÄzcem.
A zde je a.__proto__ == B.prototype, takže instanceof vrátà true.
Podle logiky instanceof je tedy typ ve skuteÄnosti definován vlastnostà prototype, ne samotným konstruktorem.