"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
alertkoâ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.prototypega topshirish yangi obyektlar uchun[[Prototype]]ni oârnatadi, ammo bu mavjudlariga taâsir qilmaydi. -
false.Obyektlar havola orqali tayinlanadi.
Rabbit.prototypeobyekti takrorlanmagan, u hali ham bitta obyektgaRabbit.prototypevarabbitning[[Prototype]]tomonidan havola qilinadi.Shunday qilib, uning mazmunini bitta havola orqali oâzgartirganda, ikkinchisi orqali koârinadi.
-
true.Barcha
o'chirishoperatsiyalari toâgâridan-toâgâri obyektga qoâllaniladi. Bu yerdarabbit.eatsfaylinirabbitdan olib tashlashga harakat qiladi, lekin unda yoâq. Shunday qilib, operatsiya hech qanday taâsir qilmaydi. -
undefined.Prototipdan
eatsxususiyati oâchirildi, endi u mavjud emas.