JavaScript Reflect.set() — записати властивість об'єкта
Метод Reflect.set() записує властивість і повертає true або false — вдалося чи ні.
Загальний опис
Оператор присвоєння цього не вміє: obj.key = 1 у нестрогому режимі просто мовчки не спрацює, якщо об'єкт заморожений. Помилки не буде, значення не зміниться — і ти про це не дізнаєшся.
Reflect.set() чесно каже false.
І саме тому він потрібен у пастці set посередника: та мусить повернути булеве значення. Повернеш false — у строгому режимі полетить TypeError; забудеш повернути взагалі — теж.
- Нотатка
-
Пастка
автор: NagarDsetзобов'язана повернутиtrueпри успіху. Забувreturn— у строгому режимі присвоєння впаде зTypeError, хоч значення й записалось.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| set | 49+ | 42+ | 10+ | 36+ | 12+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| set | 49+ | yes | yes | 10+ |
Приклади
+ запропонувати свій приклад у пісочниці
Заморожений об'єкт: присвоєння мовчить, Reflect каже правду.
const frozen = Object.freeze({ a: 1 });
frozen.a = 2; // мовчки не спрацювало
console.log(Reflect.set(frozen, 'a', 2)); // false — чесно
// у пастці — обов'язково повертаємо результат
const state = new Proxy({}, {
set(target, key, value, receiver) {
render();
return Reflect.set(target, key, value, receiver);
},
});
Коментарі
Коментарів ще немає — будьте першим!