- В предыдущих постах вы узнали, что объект может наследовать свое поведение (методы) от другого объекта, ссылаясь на его
Прототип
объект:
ChildObject.prototype = Object.create(ParentObject.prototype);
- Тогда
ChickObject
получил свои собственные методы, церовав их на егоПрототип
:
ChildObject.prototype.methodName = function() {...};
- Можно переопределить наследственный метод. Это сделано так же — добавив метод для
ChickObject.prototype
используя то же имя метода, что и один для переопределения. Вот пример собаки, переопределенного методом Eat (), унаследованного от животного:
function Animal() { } Animal.prototype.eat = function() { return "nom nom nom"; }; function Dog() { } Dog.prototype = Object.create(Animal.prototype); Dog.prototype.eat = function() { return "chew chew chew"; };
- Если у вас есть экземпляр
Пусть собака ();
и вы звонитеBeagle.eat ()
, вот как JavaScript ищет метод наБигль
Прототип
цепь:
Бигль
=> Этоесть ()
определяется здесь? Нет.Собака
=> Этоесть ()
определяется здесь? = > да. Выполните его и прекратите поиск.Животное
=>есть ()
Также определяется, но JavaScript перестал поиск до достижения этого уровня.Object => JavaScript перестал поиск до достижения этого уровня.
Оригинал: «https://dev.to/rthefounding/overriding-inherited-methods-3oo6»