JavaScript継承を試しています。基本的には、私はthisチュートリアルに従っています。JavaScriptの親コンストラクタを呼び出す必要があるのはなぜですか?継承
私はそこのコードで、Personクラスが2回インスタンス化されていることが分かります。 this fiddleをご覧ください。私が何をしたか
はコメントアウトです:
Person.call(this)
と継承がうまく働いています。元のコードで
、
Person.call(this)
ラインが使用されます。子スコープの親コンストラクタを呼び出す必要がありますか?
私はOO JavaScriptを初めて使用しています。
ありがとうございます。
EDIT:次のように
フィドルでの私のコードは次のとおりです。ここで私はこれを行う方法を
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);
T.J.Crowder @:私の質問のトーンが間違っていたていた場合は申し訳ありません。私は失礼するつもりはなかった。 – riship89
'@ hrishikeshp19':いいえ、私はあなたがしたとは思わなかった。 :-) –