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