JavaScript·100 питань

QUESTION: Що таке Object.defineProperty?

Відповідь

Метод Object.defineProperty в JavaScript є потужним інструментом низькорівневого керування властивостями об'єктів, що дозволяє точно налаштовувати їхню поведінку. Він визначає нову властивість безпосередньо на об'єкті або змінює вже наявну, повертаючи цей самий об'єкт. Головна особливість методу полягає в можливості використання дескрипторів — спеціальних об'єктів конфігурації, які визначають приховані характеристики властивості.

Існує два типи дескрипторів: дескриптори даних і дескриптори доступу. Дескриптор даних містить такі параметри, як value, що визначає значення властивості, та writable, який керує можливістю зміни цього значення. Дескриптор доступу замість value використовує функції-аксесори get і set для перехоплення читання та запису властивості, що зручно для обчислень «на льоту» або валідації.

Важливим аспектом роботи методу є те, що за замовчуванням усі прапорці керування (writable, enumerable, configurable) для нових властивостей, створених через Object.defineProperty, встановлюються в значення false. Це означає, що властивість за замовчуванням не перезаписуватиметься, не братиме участі в циклах на кшталт for...in і її не можна буде видалити чи змінити її дескриптори надалі. Для перевірки поточних налаштувань конкретної властивості можна використовувати парний метод Object.getOwnPropertyDescriptor.

Практичне застосування Object.defineProperty включає створення незмінних констант усередині об'єктів, приховування службових полів від ітерації або створення динамічних властивостей, що обчислюються під час кожного звернення. Наприклад, ви можете визначити властивість fullName, яка автоматично збиратиметься з firstName і lastName під час читання, та розбиватиме рядок назад під час запису.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем