JavaScript Reflect.get() — прочитати властивість об'єкта


Метод Reflect.get() читає властивість об'єкта — функцією, а не оператором крапки.

автор: NagarD

Загальний опис

Для звичайного читання він зайвий: obj.key коротший і зрозуміліший.

Але є місце, де без нього не обійтись — пастка get у Proxy. Усередині неї треба виконати «те, що сталося б без посередника», і Reflect.get() робить це рівно одним рядком.

Третій аргумент receiver — саме те, заради чого це не можна замінити на target[key]. Він задає, що буде this всередині геттера. Без нього геттер отримає оригінал замість посередника — і зміни в об'єкті перестануть відстежуватись, тихо й непомітно.

автор: NagarD

Порада

Усередині пастки Proxy завжди передавай receiver третім аргументом. Це та деталь, через яку реактивність працює або не працює.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
get 49+ 42+ 10+ 36+ 12+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
get 49+ yes yes 10+

Приклади

+ запропонувати свій приклад у пісочниці

Чому receiver обов'язковий у пастці Proxy.

const user = {
    first: 'Іван',
    last: 'Петренко',
    get full() {
        return this.first + ' ' + this.last;
    },
};

console.log(Reflect.get(user, 'first')); // 'Іван'

const proxy = new Proxy(user, {
    get(target, key, receiver) {
        console.log('читаємо', key);

        // з receiver — геттер full теж піде крізь пастку
        return Reflect.get(target, key, receiver);

        // а так — ні: this всередині full став би оригіналом
        // return target[key];
    },
});

proxy.full; // «читаємо full», «читаємо first», «читаємо last»
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід