Что выведет код Junior Прототипы и классы обновлено
Затенение метода прототипа и delete
Вопрос
Что выведет код? По строке на каждый вывод.
const base = { greet() { return 'база'; } };
const obj = Object.create(base);
obj.greet = () => 'своё';
console.log(obj.greet());
delete obj.greet;
console.log(obj.greet());
console.log('greet' in obj, Object.keys(obj).length);
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: своё, база, true 0. Присваивание создаёт собственный greet, он затеняет метод прототипа: своё. delete удаляет только собственное свойство, и поиск снова доходит до прототипа: база. in ищет по цепочке и находит greet: true.
Что выведет
своё
база
true 0
Разбор
Присваивание создаёт собственный greet, он затеняет метод прототипа: своё. delete удаляет только собственное свойство, и поиск снова доходит до прототипа: база. in ищет по цепочке и находит greet: true. Object.keys показывает только собственные перечисляемые ключи, их не осталось: 0.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.