Underlig instanceof
vigtighed: 5
Se på koden nedenfor. Hvorfor returnerer instanceof værdien true? Vi kan tydelig se, at a ikke er oprettet af B().
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
Ja, det er lidt mærkeligt.
Men instanceof bryder sig ikke om funktionen, men snarere om dens prototype, som den matcher mod prototype-kæden.
Og her er a.__proto__ == B.prototype, så instanceof returnerer true.
Så, hvis man følger logikken for instanceof, så definerer prototype faktisk typen, ikke constructor-funktionen.