Skip to content

Latest commit

 

History

History
28 lines (20 loc) · 1.94 KB

File metadata and controls

28 lines (20 loc) · 1.94 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