Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 2.07 KB

File metadata and controls

32 lines (24 loc) · 2.07 KB

Расскажите, как работает прототипное наследование.

Прототипом объекта А называется объект B, свойства и методы которого доступны для объекта A как собственные.

  • У любого объекта есть прототип, на который указывает его свойство __proto__ и который также является объектом.
  • У любой функции есть ассоциированный с ней объект, на который в контексте функции указывает свойство prototype. В него как в контейнер обычно складывают свойства и методы для работы с определенным классом объектов.
  • Такой контейнер автоматически становится прототипом объектов, создаваемых функциями-конструкторами
  • Для редактирования прототипной ссылки объекта используют метод Object.create() - он перезаписывает объект заново и выставляет в нем ссылку на нужный прототип.
  • Ссылки связанных друг с другом объектов образуют прототипную цепочку, которая лежит в основе прототипного наследования. Ярким примером такого наследования является цепочка узлов DOM модели.

Пример

let animal = {
	eats: true,
};
let rabbit = {
	jumps: true,
};

rabbit.__proto__ = animal; // (*)

// теперь мы можем найти оба свойства в rabbit:
alert(rabbit.eats); // true (**)
alert(rabbit.jumps); // true