Чӣ гуна хосияти объектро беэътибор кардан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Чӣ гуна метавон хосияти объектро ғайрифаъол кард, метавонад бо чанд роҳ анҷом дода шавад:
-
Истифодаи
Object.defineProperty():Ин усул имкон медиҳад, ки хосиятҳои объект бо назорати бештар муайян ё тағир дода шаванд. Барои сохтани хосияти ғайрифаъол, бояд дескрипторро бо
writable: falseтанзим кард.const obj = {}; Object.defineProperty(obj, 'myProperty', { value: 'Қимати ғайрифаъол', writable: false, // Мекунад хосияти ғайрифаъол enumerable: true, // Хосият дар давоми ислоҳот дида мешавад configurable: true // Хосият метавонад тоза ё тағир дода шавад }); // кӯшиши тағир додани қимат дар режими ғайристрогӣ нодида гирифта мешавад // ва дар режими қатъӣ хатогӣ TypeError меорад obj.myProperty = 'Қимати нав'; console.log(obj.myProperty); // Натиҷа "Қимати ғайрифаъол"Агар
configurable: falseгузошта шавад, хосият наметавонад тоза ё тағир дода шавад (аз ҷумлаwritable).const obj2 = {}; Object.defineProperty(obj2, 'myProperty', { value: 'Қимати ғайрифаъол ва душвор тоза', writable: false, enumerable: true, configurable: false // Дескрипторро ғайрифаъол мекунад }); // кӯшиши тағир додани қимат obj2.myProperty = 'Қимати нав'; console.log(obj2.myProperty); // Натиҷа "Қимати ғайрифаъол ва душвор тоза" // кӯшиши тоза кардани хосият delete obj2.myProperty; console.log(obj2.myProperty); // Натиҷа "Қимати ғайрифаъол ва душвор тоза" -
Истифодаи
Object.freeze():Ин усул объекти "мўйсаф" мекунад. Ин маъно дорад, ки илова кардани хосиятҳои нав, тоза кардани мавҷудбударо, тағир додани арзишҳои мавҷудбуда (аз ҷумла enumeration ва конфигуратсия) ва тағир додани прототипи объект манъ аст.
const obj = { myProperty: 'Қимати ғайрифаъол' }; Object.freeze(obj); // кӯшиши тағир додани қимат obj.myProperty = 'Қимати нав'; console.log(obj.myProperty); // Натиҷа "Қимати ғайрифаъол" // кӯшиши илова кардани хосияти нав obj.newProperty = 'Нав'; console.log(obj.newProperty); // undefined // кӯшиши тоза кардани хосият delete obj.myProperty; console.log(obj.myProperty); // Натиҷа "Қимати ғайрифаъол"Муҳим аст, ки
Object.freeze()сатҳӣ аст. Агар хосияти объект дигар объект бошад, он объект дарунӣ ҳамзамон мўйсаф намешавад. -
Истифодаи
constбарои тағйирёбандаҳои дорои объект:Калидвожа
constпайвандро бо объект ғайрифаъол мекунад, аммо на худи объектро. Шумо наметавонед тағйир додани пайвандро ба объект дигар, аммо метавонед хосиятҳои объектро тағир диҳед.const obj = { myProperty: 'Арзиш оғозӣ' }; // Мумкин аст арзиши хосиятро тағир додан obj.myProperty = 'Арзиш нав'; console.log(obj.myProperty); // "Арзиш нав" // Нагузоред пайвандро тағир додан // obj = { дигарХосият: 'Дигар' }; // Хатогӣ TypeError
Мувофиқи усулҳо муқоиса:
| Усул | Чӣ мекунад ғайрифаъол? | Сатҳи ғайрифаъолият |
|---|---|---|
Object.defineProperty() |
Як хосияти муайян | Бо дескриптор муайян мешавад |
Object.freeze() |
Ҳамаи объект | Сатҳӣ |
const |
Пайванд ба объект | Вариаблӣ |
Интихоби усул вобаста аст, ки чӣ қадар дақиқ бояд ғайрифаъолият бошад. Барои як хосият мувофиқ аст Object.defineProperty(), барои тамоми объект - Object.freeze(). Барои пешгирӣ аз тағир додани пайванд, истифода мешавад const.