Как в JavaScript устроена система прототипов?
Answer from AI
sobes.tech AI
В JavaScript система прототипов — это механизм наследования, при котором объекты могут наследовать свойства и методы от других объектов.
Каждый объект имеет внутреннее свойство [[Prototype]] (доступное через __proto__ или Object.getPrototypeOf), которое указывает на другой объект — прототип. Если при обращении к свойству объекта оно не найдено, поиск продолжается в прототипе, затем в прототипе прототипа и так далее, пока не будет достигнут null.
Это позволяет создавать цепочки прототипов и реализовывать наследование без классов (хотя в современных версиях JS есть синтаксис классов, под капотом он использует прототипы).
Пример:
const animal = {
speak() {
console.log('Animal speaks');
}
};
const dog = Object.create(animal);
dog.bark = function() {
console.log('Woof!');
};
dog.bark(); // Woof!
dog.speak(); // Animal speaks (унаследовано от animal)
Таким образом, прототипы позволяют объектам делиться поведением и свойствами, что является основой объектно-ориентированного программирования в JavaScript.