JavaScript Reflect.has() — чи є властивість в об'єкта
Метод Reflect.has() перевіряє наявність властивості — це функціональна форма оператора in.
Загальний опис
Як і in, він бачить і успадковані властивості: Reflect.has({}, 'toString') дає true, бо метод прийшов із прототипу.
Якщо потрібні лише власні властивості, бери Object.hasOwn().
У парі з Proxy він реалізує пастку has — ту, що спрацьовує на операторі in.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| has | 49+ | 42+ | 10+ | 36+ | 12+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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
Коментарі
Коментарів ще немає — будьте першим!