Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: наследование, __proto__, прототипы

Как создать наследование в JavaScript с использованием прототипов?

Этот вопрос проверяет знание того, как организовать наследование между объектами в JavaScript через механизм прототипов. Важно понимать, как один объект может "унаследовать" свойства и методы другого объекта.

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

Наследование в JavaScript можно реализовать через прототипы, связывая объекты друг с другом. Это можно сделать вручную с помощью свойства __proto__ или с использованием метода Object.create(). Это позволяет новому объекту получать доступ к свойствам и методам другого объекта через цепочку прототипов.

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

В JavaScript наследование можно реализовать с помощью прототипов. Каждый объект может иметь ссылку на другой объект через скрытое свойство [[Prototype]], доступное через __proto__. Когда вы пытаетесь получить доступ к свойству, которое не существует на объекте, JavaScript обращается к его прототипу, а затем продолжает поиск по цепочке прототипов.

Есть несколько способов создания наследования:

  • Использование __proto__: Это самый прямолинейный способ связывания объектов.

const animal = {
	speak() {
		console.log('Animal speaks');  
	} 
}; 
const dog = {
	bark() {
		console.log('Dog barks');  
	} 
};
dog.__proto__ = animal; 
dog.speak(); // 'Animal speaks' 
dog.bark();  // 'Dog barks'
  • Использование Object.create(): Этот метод создает новый объект и позволяет явно указать его прототип.

const animal = {
	speak() { 
		console.log('Animal speaks');  
	} 
}; 
const dog = Object.create(animal); 
dog.bark = function() {
	console.log('Dog barks'); 
}; 
dog.speak(); // 'Animal speaks' 
dog.bark();  // 'Dog barks'
  • Наследование через функции-конструкторы: В JavaScript также можно использовать функции-конструкторы для создания объектов, которые будут наследовать свойства и методы через свойство prototype:

function Animal() {
	Animal.prototype.speak = function() {
		console.log('Animal speaks');
	};
}
function Dog() {}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
const dog = new Dog();
dog.speak(); // Animal speaks

Наследование через прототипы — это гибкий механизм, который позволяет создавать объекты, разделяющие общие методы и свойства, сохраняя при этом низкое потребление памяти и возможность динамически изменять поведение объектов.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#наследование

#__proto__

#прототипы

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