Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: for...in, hasOwnProperty, prototype, inherited properties, object iteration

Как при обходе объекта через for...in защититься от итерации по унаследованным свойствам из прототипа?

Вопрос проверяет понимание работы цикла for...in и прототипного наследования в JavaScript, а также умение использовать метод hasOwnProperty для фильтрации собственных свойств объекта.

Короткий ответ

Цикл for...in перебирает все перечисляемые свойства объекта, включая унаследованные из прототипа. Чтобы защититься от этого, внутри цикла нужно использовать метод hasOwnProperty, который возвращает true только для собственных свойств объекта. Например: if (obj.hasOwnProperty(key)) { ... }.

Длинный ответ

Проблема унаследованных свойств в for...in

Цикл for...in в JavaScript перебирает все перечисляемые свойства объекта, включая те, которые были унаследованы через цепочку прототипов. Это может привести к неожиданным результатам, если объект имеет прототип с дополнительными свойствами.

Решение с hasOwnProperty

Метод hasOwnProperty, унаследованный от Object.prototype, проверяет, является ли свойство собственным (не унаследованным). Используйте его внутри цикла для фильтрации:

const parent = { inheritedProp: 'value' };
const child = Object.create(parent);
child.ownProp = 'own';

for (let key in child) {
  if (child.hasOwnProperty(key)) {
    console.log(key); // только 'ownProp'
  }
}

Альтернативные подходы

  • Object.keys() — возвращает массив только собственных перечисляемых свойств, не затрагивая прототип.
  • Object.getOwnPropertyNames() — возвращает все собственные свойства, включая неперечисляемые.

Вывод

Используйте hasOwnProperty внутри for...in для безопасной итерации по собственным свойствам объекта, особенно при работе с объектами, которые могут иметь неожиданные прототипы.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#for...in

#hasOwnProperty

#prototype

#inherited properties

#object iteration

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию