> Если объект является экземпляром класса и методы лежат в прототипе, где их увидим: в for-in или Object.keys (JavaScript)
Уровень: middle · Роль: frontend · Категория: Технические вопросы
Компании: Kaspersky
Стек: JavaScript
> Пример ответа
В for...in мы увидим методы, лежащие в прототипе, а в Object.keys - нет.
for...in перебирает все перечисляемые свойства объекта, включая унаследованные через цепочку прототипов. Например:
JAVASCRIPTfunction MyClass() {}MyClass.prototype.method = function() {};const obj = new MyClass();obj.ownProp = 'value';for (let key in obj) {console.log(key); // 'ownProp', 'method'}
Object.keys() возвращает только собственные перечисляемые свойства объекта, игнорируя прототип:
JAVASCRIPTconsole.log(Object.keys(obj)); // ['ownProp']
Поэтому, если нужно проверить наличие методов в прототипе, for...in их покажет, а Object.keys - нет. Для фильтрации собственных свойств в for...in используют hasOwnProperty().
> Похожие задачи по frontend
Как реализовать бесконечную ленту (infinite scroll) в веб-приложении
Как реализовать перетаскивание модального окна мышкой на чистом JavaScript с использованием событий?
Какие данные остаются после преобразования типов в JavaScript и когда оно происходит
Что такое функция обратного вызова (callback) и когда она вызывается в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью