darsga qaytish

G'alati instanceof

Nima uchun instanceof quyida true ni qaytaradi? Biz a ning B() tomonidan yaratilmaganligini osongina ko’rishimiz mumkin.

function A() {}
function B() {}

A.prototype = B.prototype = {};

let a = new A();

alert( a instanceof B ); // true

Ha, haqiqatan ham g’alati ko’rinadi.

Ammo instanceof funktsiyaga ahamiyat bermaydi, aksincha uning prototype, prototip zanjiriga mos kelishi muhim.

Va bu yerda a.__proto__ == B.prototype, shuning uchun instanceof true ni qaytaradi.

Shunday qilib, instanceof mantig’iga ko’ra, prototype aslida konstruktor funktsiyasini emas, balki turini belgilaydi.