Я экспериментирую с наследованием JavaScript.По сути, я следую этому учебнику.
Я вижу, что с помощью этого кода класс Person создается дважды.Пожалуйста, взгляните на эту скрипку .
Что я сделал, так это прокомментировал:
Person.call(this)
И наследование работает просто отлично.
В исходном коде используется строка
Person.call(this)
.Есть ли необходимость вызова родительского конструктора с дочерним контекстом?
Не могли бы вы также дать некоторые пояснения, я новичок в OO JavaScript.
Большое спасибо.
РЕДАКТИРОВАТЬ:
Мой код в скрипте выглядит следующим образом:
function Person(gender) {
this.gender = gender;
document.write('Person instantiated</br>');
}
Person.prototype.walk = function(){
document.write("is walking</br>");
};
Person.prototype.sayHello = function(){
document.write("Hello</br>");
};
Person.prototype.sayGender = function(){
document.write(this.gender + "</br>");
};
function Student() {
//Person.call(this);
document.write('Student instantiated</br>');
}
Student.prototype = new Person();
Student.prototype.constructor = Student;
Student.prototype.sayHello = function(){
document.write("Student says Hello</br>");
}
Student.prototype.sayGoodBye = function(){
document.write("Student says goodbye</br>");
}
var student1 = new Student();
student1.sayHello();
student1.walk();
student1.sayGoodBye();
document.write(student1 instanceof Person);
document.write("</br>");
document.write(student1 instanceof Student);