"instanceof" Aneh
pentingnya: 5
Pada kode dibawah, kenapa instanceof mengembalikan true? Dengan jelas kita dapat melihat a tidak dibuat oleh B().
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
Yah, memang terlihat aneh.
Tetapi instanceof tidak peduli dengan fungsinya, melainkan tentang prototype, yang cocok dengan rantai prototipe.
Dan di sini a.__proto__ == B.prototype, jadi instanceof mengembalikan true.
Jadi, dengan menggunakan logika instanceof, prototype sebenarnya mendefinisikan tipe, bukan fungsi konstruktor.