Різниця між оператором in та методом hasOwnProperty() у JavaScript
В JavaScript ми маємо два основні способи перевірити, чи має об'єкт певну властивість:
in— оператор, який перевіряє все (включаючи успадковані пропси)..hasOwnProperty()— метод об'єкта, який перевіряє тільки власні пропси.
Таблиця порівняння
| Характеристика | in | .hasOwnProperty() |
|---|---|---|
| Перевіряє включаючи прототип | Так | Ні, тільки власні пропси |
| Перевіряє тільки власні пропси | Ні | Так |
| Може використовуватися з прототипами | Так | Так |
Може викидати помилку на undefined об'єкті | Так (якщо об'єкт не перевірено) | Може бути викликано тільки на об'єкті |
Приклад використання
in — перевірка включаючи прототипи
javascript
const obj = { name: "John" };
console.log("name" in obj); // true
console.log("toString" in obj); // true (успадковано з Object.prototype)hasOwnProperty() — перевірка тільки власних властивостей
javascript
console.log(obj.hasOwnProperty("name")); // true
console.log(obj.hasOwnProperty("toString")); // false (успадковано)Висновок:
Використовуйте hasOwnProperty(), коли вам потрібно перевірити тільки власні пропси об'єкта. Використовуйте in, якщо вам також потрібно перевірити успадковані пропси з ланцюга прототипів.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.