en.javascript.info/1-js/9-object-inheritance/08-class-inheritance/2-inheritance-error-constructor/solution.md
Ilya Kantor f99574f53b up
2016-11-14 16:31:21 +03:00

1 KiB
Raw Blame History

Ошибка -- в том, что метод walk присваивается в конструкторе Animal самому объекту вместо прототипа.

Поэтому, если мы решим перезаписать этот метод своим, специфичным для кролика, то он не сработает:

// ...

// записывается в прототип
Rabbit.prototype.walk = function() {
  alert( "прыгает " + this.name );
};

Метод this.walk из Animal записывается в сам объект, и поэтому он всегда будет первым, игнорируя цепочку прототипов.

Правильно было бы определять walk как Animal.prototype.walk.

Тем более, что этот метод является общим для всех объектов, тратить память и время на запись его в каждый конструктор определённо ни к чему.