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