1 KiB
1 KiB
Ошибка -- в том, что метод walk
присваивается в конструкторе Animal
самому объекту вместо прототипа.
Поэтому, если мы решим перезаписать этот метод своим, специфичным для кролика, то он не сработает:
// ...
// записывается в прототип
Rabbit.prototype.walk = function() {
alert( "прыгает " + this.name );
};
Метод this.walk
из Animal
записывается в сам объект, и поэтому он всегда будет первым, игнорируя цепочку прототипов.
Правильно было бы определять walk
как Animal.prototype.walk
.
Тем более, что этот метод является общим для всех объектов, тратить память и время на запись его в каждый конструктор определённо ни к чему.