kembali ke pelajaran

"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.