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