Derse geri dön

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.