私はMozillaDeveloperNetworkからオブジェクト指向JavaScriptの概要を読んでいました。node.jsの使用を開始する前に、非常に深刻なJavascriptを学ぶ時間です。
とにかく、継承のことは私にはとてもあいまいに思えます。ドキュメントからコピーして貼り付けます。
// define the Person Class
function Person() {}
Person.prototype.walk = function(){
alert ('I am walking!');
};
Person.prototype.sayHello = function(){
alert ('hello');
};
Student
これは簡単ですが、継承によって事態は複雑になります。次の3つのステートメントが本質的に同じことをしていると他の誰かが思いますか?
// define the Student class
function Student() {
// Call the parent constructor
Person.call(this);
}
// inherit Person
Student.prototype = new Person();
// correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;
JavaやPHPなどに非常に似ているため、最初のもの(親コンストラクターの呼び出し)を理解しています。しかし、それから問題が始まります。
なぜ電話する必要があるのStudent.prototype
ですか?Student.prototype.constructor
明確な説明が必要です。なぜこのコード:
// define the Student class
function Student() {
// Call the parent constructor
Person.call(this);
}
var student1 = new Student();
継承が機能するには十分ではありませんか?
編集:コンストラクターのことに関しては、すでにここで回答されています。