BonsaiDen / JavaScript-Garden

A collection of documentation about the most quirky parts of the JavaScript language.
http://bonsaiden.github.com/JavaScript-Garden
MIT License
3.45k stars 559 forks source link

The instanceof Operator #398

Open futurfrukt opened 3 years ago

futurfrukt commented 3 years ago
The instanceof operator compares the constructors of its two operands

This is a bit misformulated and can be wrong understood: according to MDN, instanceof compares not constructor (property of prototype object, but the exact link to prototype objects.

If you set only constructor property, the instanceof will return false, because despite prototype objects looks equal, they are actually different objects:

function A(){}
function B(){}
B.prototype.constructor = A; // *

// has the same constructor 
B.prototype.constructor === A; // true

// but this does not mean its an instance of
new B() instanceof A; // false