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


Метод Reflect.has() перевіряє наявність властивості — це функціональна форма оператора in.

автор: NagarD

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

Як і in, він бачить і успадковані властивості: Reflect.has({}, 'toString') дає true, бо метод прийшов із прототипу.

Якщо потрібні лише власні властивості, бери Object.hasOwn().

У парі з Proxy він реалізує пастку has — ту, що спрацьовує на операторі in.

автор: NagarD

Переглядачі

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

Приклади

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

Успадковане теж рахується — і як цього уникнути.

const user = { name: 'Іван' };

console.log(Reflect.has(user, 'name'));     // true
console.log(Reflect.has(user, 'toString')); // true — з прототипу!

// лише власні
console.log(Object.hasOwn(user, 'toString')); // false

// пастка has спрацьовує на операторі in
const hidden = new Proxy(user, {
    has: (target, key) => !key.startsWith('_') && Reflect.has(target, key),
});

console.log('_secret' in hidden); // false
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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