Наследование Javascript; вызов и прототип
Чтобы реализовать наследование в Javascript, обычно делают следующие 2 шага;
Скажите, у меня есть базовый класс "Животное"
var Animal = function(name){
this.name = name;
}
Теперь я хочу вывести подкласс "Собака" из того же. Так что я бы сказал,
var Dog = function(name) {
Animal.call(this,name);
}
Поэтому я вызываю конструктор родительского класса из моего конструктора производного класса. 2-й шаг - установить прототип следующим образом;
Dog.prototype = new Animal();
Теперь я могу получить доступ к любым свойствам базового класса «Животное» из моего производного класса Dog.
Итак, мой вопрос: зачем нужны эти 2 шага? Если мы просто вызываем конструктор базового класса, используя
Animal.call(this,name);
Разве этого недостаточно для реализации Наследования?
Почему мытакже необходимо установить свойство прототипа, используяDog.prototype = new Animal();
?
Я хотел понять, что делает каждый из вышеперечисленных 2 шагов?