Вопрос проверяет понимание того, как именно JavaScript завершает поиск свойств и методов в прототипной цепочке.
В конце прототипной цепочки находится null. Обычно последний “реальный” объект в цепочке — это Object.prototype, а его прототип равен null. Когда поиск свойства доходит до null, JavaScript прекращает поиск и возвращает undefined. Это и есть финальная точка любого прототипного поиска.
Конец прототипной цепочки — это момент, когда у объекта больше нет прототипа, и дальнейший поиск свойств невозможен.
Сначала опишем словами: при обращении к свойству JavaScript двигается “вверх” по цепочке прототипов.
Проверяется сам объект
Проверяется его прототип
Проверяются прототипы прототипов
Поиск останавливается, когда прототип равен null
Для большинства объектов:
Последний объект — Object.prototype
Его прототип — null
Это можно проверить явно:
const obj = {};
console.log(Object.getPrototypeOf(obj)); // Object.prototype
console.log(Object.getPrototypeOf(Object.prototype)); // null
Если свойство не найдено ни в одном объекте цепочки:
JavaScript доходит до null
Поиск прекращается
Возвращается undefined
Понимание конца цепочки помогает:
Объяснить, почему свойство “пропадает”
Избежать ошибок при доступе к вложенным методам
Это важно при:
Отладке
Понимании hasOwnProperty
Работе с кастомным наследованием
Концом прототипной цепочки всегда является null, а последний объект перед ним — Object.prototype. Это гарантирует, что поиск свойств в JavaScript всегда конечен.