> Если объект является экземпляром класса и методы лежат в прототипе, где их увидим: в for-in или Object.keys (JavaScript)

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

Компании: Kaspersky

Стек: JavaScript

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

В for...in мы увидим методы, лежащие в прототипе, а в Object.keys - нет.

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

JAVASCRIPT
function MyClass() {}
MyClass.prototype.method = function() {};
const obj = new MyClass();
obj.ownProp = 'value';
for (let key in obj) {
console.log(key); // 'ownProp', 'method'
}

Object.keys() возвращает только собственные перечисляемые свойства объекта, игнорируя прототип:

JAVASCRIPT
console.log(Object.keys(obj)); // ['ownProp']

Поэтому, если нужно проверить наличие методов в прототипе, for...in их покажет, а Object.keys - нет. Для фильтрации собственных свойств в for...in используют hasOwnProperty().

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

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