Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: prototype, function, constructor, inheritance, object

Как определяется прототип функции?

Вопрос проверяет понимание механизма прототипов в JavaScript, который является основой для реализации наследования и повторного использования кода.

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

Каждая функция в JavaScript (кроме стрелочных) имеет свойство prototype, которое является объектом. Этот объект автоматически создаётся при объявлении функции и используется как прототип для новых объектов, созданных с помощью этой функции в роли конструктора (через оператор new). Свойство prototype содержит методы и свойства, которые будут доступны всем экземплярам, созданным этим конструктором. Это основа прототипного наследования в языке.

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

В JavaScript функции являются объектами первого класса, и у них есть специальное свойство prototype. Это свойство существует только у функций (за исключением стрелочных) и автоматически создаётся движком при объявлении функции. Оно играет ключевую роль в механизме прототипного наследования.

Что такое prototype функции?

Свойство prototype — это обычный объект, который изначально имеет одно собственное свойство constructor, ссылающееся обратно на саму функцию. Этот объект используется как шаблон или "хранилище общих методов" для всех объектов, которые будут созданы с помощью данной функции в роли конструктора.

Как это работает?

Когда вы создаёте объект через new Constructor(), внутренняя ссылка [[Prototype]] (доступная через __proto__ или Object.getPrototypeOf()) этого нового объекта устанавливается на объект Constructor.prototype. Таким образом, если свойство не найдено в самом объекте, JavaScript ищет его в цепочке прототипов, начиная с Constructor.prototype.

Пример кода

// Объявляем функцию-конструктор
function Person(name) {
    this.name = name;
}

// Добавляем метод в прототип функции Person
Person.prototype.greet = function() {
    console.log(`Привет, меня зовут ${this.name}`);
};

// Создаём экземпляр
const alice = new Person('Алиса');

// Метод вызывается из прототипа
alice.greet(); // Вывод: Привет, меня зовут Алиса

// Проверяем связь
console.log(Object.getPrototypeOf(alice) === Person.prototype); // true
console.log(alice.constructor === Person); // true (через цепочку прототипов)

Где это применяется?

  • Для реализации наследования и повторного использования кода (методы хранятся в прототипе, а не копируются в каждый экземпляр).
  • При создании пользовательских классов (до появления синтаксиса ES6 class).
  • В библиотеках и фреймворках для расширения встроенных объектов (например, добавление методов в Array.prototype, что требует осторожности).

Вывод: Свойство prototype функции — это объект, который становится прототипом для всех экземпляров, созданных через new. Этот механизм стоит использовать, когда нужно эффективно разделять методы между множеством объектов одного типа, избегая дублирования кода.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#prototype

#function

#constructor

#inheritance

#object

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию