Во-первых, запуск конструктора Animal
может иметь нежелательные побочные эффекты. Рассмотрим это:
var Animal = function(name) {
this.name = name;
Animal.instances.push(this);
};
Animal.instances = [];
Эта версия будет отслеживать все созданные экземпляры. Вы не хотите, чтобы ваш Dog.prototype
был записан там.
Во-вторых, Dog.prototype = Animal.prototype
- плохая идея, поскольку это означало бы, что bark
станет методом Animal
.