GeezerVison is showing uz.javascript.info — "Prototip" ni o'zgartirish
darsga qaytish"Prototip" ni o'zgartirish
Quyidagi kodda biz new Rabbit ni yaratamiz va keyin uning prototipini o’zgartirishga harakat qilamiz.
Boshida bizda ushbu kod mavjud:
function Rabbit() {}
Rabbit.prototype = {
eats: true,
};
let rabbit = new Rabbit();
alert(rabbit.eats); // true
-
Biz yana bitta matn qo’shdik (ta’kidlangan), hozir qanday alert ko’rsatilmoqda?
function Rabbit() {}
Rabbit.prototype = {
eats: true
};
let rabbit = new Rabbit();
Rabbit.prototype = {};
alert( rabbit.eats ); // ?
-
…Va agar kod shunga o’xshash bo’lsa (bitta satr o’rni o’zgartirildi)?
function Rabbit() {}
Rabbit.prototype = {
eats: true
};
let rabbit = new Rabbit();
Rabbit.prototype.eats = false;
alert( rabbit.eats ); // ?
-
Bu kabi (bitta satr o’rni o’zgartirildi)?
function Rabbit() {}
Rabbit.prototype = {
eats: true
};
let rabbit = new Rabbit();
delete rabbit.eats;
alert( rabbit.eats ); // ?
-
Oxirgi variant:
function Rabbit() {}
Rabbit.prototype = {
eats: true
};
let rabbit = new Rabbit();
delete Rabbit.prototype.eats;
alert( rabbit.eats ); // ?
Javoblar:
-
true.
Rabbit.prototype ga topshirish yangi obyektlar uchun [[Prototype]] ni o’rnatadi, ammo bu mavjudlariga ta’sir qilmaydi.
-
false.
Obyektlar havola orqali tayinlanadi. Rabbit.prototype obyekti takrorlanmagan, u hali ham bitta obyektga Rabbit.prototype va rabbit ning [[Prototype]] tomonidan havola qilinadi.
Shunday qilib, uning mazmunini bitta havola orqali o’zgartirganda, ikkinchisi orqali ko’rinadi.
-
true.
Barcha o'chirish operatsiyalari to’g’ridan-to’g’ri obyektga qo’llaniladi. Bu yerda rabbit.eats faylini rabbit dan olib tashlashga harakat qiladi, lekin unda yo’q. Shunday qilib, operatsiya hech qanday ta’sir qilmaydi.
-
undefined.
Prototipdan eats xususiyati o’chirildi, endi u mavjud emas.