Skip to main content
Практика завдань

Різниця між оператором in та методом hasOwnProperty() у JavaScript

В JavaScript ми маємо два основні способи перевірити, чи має об'єкт певну властивість:

  1. in — оператор, який перевіряє все (включаючи успадковані пропси).
  2. .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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань