Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про 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. Этот механизм стоит использовать, когда нужно эффективно разделять методы между множеством объектов одного типа, избегая дублирования кода.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#prototype

#function

#constructor

#inheritance

#object

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