Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: prototype, chain

От какого объекта в JavaScript в итоге наследуются все типы?

Этот вопрос проверяет понимание прототипного наследования и того, откуда берутся базовые методы вроде toString().

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

Практически все объекты в JavaScript в итоге наследуются от Object.prototype. Это “базовый” объект в прототипной цепочке, где находятся общие методы (toString, hasOwnProperty и т.д.). Сам Object.prototype обычно наследуется от null, то есть это конец цепочки. Примитивы напрямую не объекты, но при обращении к методам часто временно “оборачиваются” в объект-обёртку.

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

Определение

Прототипная цепочка — это механизм, где объект может искать свойства и методы не только в себе, но и в своём прототипе ([[Prototype]]).

Базовая идея наследования

Перед перечислением: когда вы пишете obj.toString(), JS ищет toString сначала в obj, потом в его прототипе, потом выше — пока не найдёт или не упрётся в конец цепочки.

  1. Для обычных объектов конечная “база” — Object.prototype

  2. А “последний шаг” после Object.prototype — это null

Пример проверки цепочки

const obj = { a: 1 };

console.log(Object.getPrototypeOf(obj) === Object.prototype); // true
console.log(Object.getPrototypeOf(Object.prototype)); // null

А как же массивы, функции, даты

У них есть свои прототипы, но цепочка всё равно обычно приходит к Object.prototype.

  1. Массив:

const arr = [];
console.log(Object.getPrototypeOf(arr) === Array.prototype); // true
console.log(Object.getPrototypeOf(Array.prototype) === Object.prototype); // true

Важный нюанс про примитивы

Примитивы сами по себе не наследуются как объекты, но методы у них появляются через временную “обёртку”:

  • "hi".toUpperCase() работает, потому что строка временно превращается в объект String.

Вывод

Большинство объектов в JS в итоге наследуются от Object.prototype, а конец прототипной цепочки — null. Это объясняет, почему базовые методы доступны почти “везде”.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#prototype

#chain

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