JavaScript Reflect.defineProperty() — оголосити властивість із дескриптором
Метод Reflect.defineProperty() створює або змінює властивість із повним дескриптором: значення, перелічуваність, можливість запису.
Загальний опис
Робить те саме, що Object.defineProperty(), але з важливою різницею: при невдачі повертає false, а не кидає виняток.
Це робить його зручнішим для перевірок — не треба обгортати в try...catch.
Дескриптор дозволяє створити властивість, яку не видно в Object.keys() і в JSON.stringify() (enumerable: false) або яку не можна перезаписати (writable: false).
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| defineProperty | 49+ | 42+ | 10+ | 36+ | 12+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| defineProperty | 49+ | yes | yes | 10+ |
Приклади
+ запропонувати свій приклад у пісочниці
Прихована незмінна властивість — без винятків.
const config = {};
const ok = Reflect.defineProperty(config, 'version', {
value: '1.0',
writable: false, // не змінити
enumerable: false, // не видно в Object.keys і JSON
});
console.log(ok); // true — а Object.defineProperty кинув би виняток
config.version = '2.0';
console.log(config.version); // '1.0' — не змінилось
console.log(Object.keys(config)); // [] — не видно
console.log(JSON.stringify(config)); // '{}'
Коментарі
Коментарів ще немає — будьте першим!