> Чем собственные свойства отличаются от унаследованных в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: EvApps

Стек: JavaScript

> Пример ответа

Собственные свойства (own properties) - это свойства, которые принадлежат непосредственно объекту и добавляются через конструктор, литерал объекта или метод Object.defineProperty. Унаследованные свойства (inherited properties) берутся из цепочки прототипов (prototype chain) и доступны объекту через наследование от родительского класса или прототипа.

Ключевые отличия:

  1. Принадлежность: Собственные свойства хранятся в самом объекте (проверяются через hasOwnProperty), а унаследованные - в прототипе.

  2. Перебор: Цикл for...in перечисляет и собственные, и унаследованные свойства (кроме встроенных, если они не переопределены). Метод Object.keys() возвращает только собственные.

  3. Изменение: Унаследованные свойства можно переопределить, создав собственное свойство с тем же именем, но это не влияет на прототип.

Пример:

JAVASCRIPT
function Animal(name) {
this.name = name; // собственное свойство
}
Animal.prototype.speak = function() { // унаследованное свойство (метод)
console.log(`${this.name} издает звук`);
};
const dog = new Animal('Бобик');
dog.color = 'черный'; // собственное свойство
console.log(dog.hasOwnProperty('name')); // true
console.log(dog.hasOwnProperty('speak')); // false
console.log(dog.hasOwnProperty('color')); // true

Практическое применение: Для безопасной проверки наличия свойства у самого объекта (без учета прототипа) используйте Object.hasOwn(obj, prop) (современный стандарт) или obj.hasOwnProperty(prop).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью