Օբյեկտի property descriptor-ներ
Օբյեկտի property descriptor-ներ JavaScript-ում (writable, enumerable, configurable)
JavaScript-ում ամեն հատկություն օբյեկտի վրա ունի մի շարք թաքնված հատկություններ՝ որոնք հայտնի են որպես property descriptor-ներ: Դրանք վերահսկում են, թե ինչպես է տվյալ հատկությունը պահվում, փոխվում կամ ցուցադրվում օբյեկտում։
Գոյություն ունեն երեք հիմնական descriptor՝ writable
, enumerable
, configurable
։ Այս հատկություններին հասնելու կամ փոփոխելու համար օգտագործվում է Object.defineProperty()
մեթոդը։
writable
— Կարելի է արդյոք փոփոխել արժեքը
const person = {};
Object.defineProperty(person, 'name', {
value: 'Anna',
writable: false
});
person.name = 'Mariam';
console.log(person.name); // 'Anna'
Այս հատկության առավելությունները:
enumerable
— Տեսանելի է արդյոք loop-երում
const user = {};
Object.defineProperty(user, 'id', {
value: 101,
enumerable: false
});
for (let key in user) {
console.log(key); // ոչինչ չի տպում
}
console.log(Object.keys(user)); // []
Այս հատկության առավելությունները:
configurable
— Կարելի է արդյոք ջնջել կամ վերակառուցել
const settings = {};
Object.defineProperty(settings, 'theme', {
value: 'dark',
configurable: false
});
delete settings.theme;
console.log(settings.theme); // 'dark'
Object.defineProperty(settings, 'theme', {
value: 'light'
}); // Error in strict mode
Այս հատկության առավելությունները:
const car = { brand: 'Toyota' };
const descriptor = Object.getOwnPropertyDescriptor(car, 'brand');
console.log(descriptor);
// {
// value: 'Toyota',
// writable: true,
// enumerable: true,
// configurable: true
// }
Այս մեթոդի առավելությունները: