Что такое цепочка прототипов в JavaScript

Источник: «What is Prototype Chaining in JavaScript»
Цепочка прототипов — это механизм в JavaScript, позволяющий объектам наследовать свойства и методы других объектов, имея общий прототип. В JavaScript каждый объект имеет связанный с ним прототип объекта, и эти прототипы образуют цепочку. Когда свойство или метод не найдены в объекте, JavaScript просматривает цепочку прототипов, чтобы найти его в прототипе объекта или в прототипах его предков.

Вот как работает цепочка прототипов:

Прототипы объекта:

Цепочка прототипов:

Наследование:

Object.create():

Приведём простой пример:

// Прототип Объекта
const animal = {
makeSound: function() {
console.log('Generic Animal Sound');
}
};
// Объект с Прототипом
const dog = Object.create(animal);
dog.bark = function() {
console.log('Woof! Woof!');
};
// Объект с Прототипом
const cat = Object.create(animal);
cat.meow = function() {
console.log('Meow! Meow!');
};
// Использование объектов
dog.makeSound(); // Наследуется из прототипа
dog.bark(); // Определяется объектом
cat.makeSound(); // Наследуется из прототипа
cat.meow(); // Определяется объектом

В данном примере dog и cat являются объектами со своими собственными свойствами (bark и meow), но они также наследуют метод makeSound от общего прототипа animal. Таким образом, образуется цепочка прототипов: dog и cat наследуют от animal, а сам animal может иметь собственный прототип, образуя цепочку прототипов.

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

Дополнительные материалы

Предыдущая Статья

Новое в Symfony 6.4: Улучшения DX (часть 1)

Следующая Статья

Новое в Symfony 6.4: Улучшения AssetMapper