Sobes.tech
Middle
12

Расскажите про прототипы в JavaScript. В чём отличие prototype от __proto__?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

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

  • prototype — это свойство функции-конструктора, которое указывает на объект, используемый как прототип для всех объектов, созданных через этот конструктор с помощью new.
  • __proto__ — это внутреннее свойство (или геттер/сеттер), доступное у объектов, которое указывает на прототип конкретного объекта.

Пример:

function Person(name) {
  this.name = name;
}
Person.prototype.greet = function() {
  return `Hello, ${this.name}`;
};

const alice = new Person('Alice');
console.log(alice.__proto__ === Person.prototype); // true

Таким образом, prototype — это свойство функции, а __proto__ — ссылка на прототип у объекта. __proto__ показывает, откуда объект наследует свойства, а prototype определяет, что будет у наследников, созданных через конструктор.