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