Garip instanceof
önem: 5
Aşağıdaki instanceof
neden true
dönüyor? Aslında a
’nın B()
tarafından üretilmediği açık.
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
Gerçekten de garip.
Fakat instanceof
aslında fonksiyonu umursamaz, bunun yerine bunun prototype
’ını umursar ve bu prototip zinciriyle karşılaştırılır.
Burada a.__proto__ == B.prototype
, bundan dolayı instanceof
, true
dönecektir.
Öyleyse, instanceof
mantığına göre asıl tipi gelirleyen prototiptir
, yapıcı fonksiyon değil.