1

私はJavascriptが初めてで、正しい解決策を見つけるのに苦労しています。プロパティを持つ新しいサブクラスを定義するとき、それを行うための正しい/ベストプラクティスは何ですか? 以下のコードは MDN から引っ張ってきましたが、継承でプロパティを渡す方法については触れていません。必要なのは、インスタンス化中に定義されるプロパティを持つスーパークラスとサブクラスです。スーパークラスのプロパティはすべてのサブクラスで利用できる必要があり、サブクラスのプロパティはサブクラスにのみ属します。誰かが私を正しい方向に向けることができますか?

// define the Person Class  
function Person() {}  

Person.prototype.walk = function(){  
  alert ('I am walking!');  
};  
Person.prototype.sayHello = function(){  
  alert ('hello');  
};  

// 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;  

// replace the sayHello method  
Student.prototype.sayHello = function(){  
  alert('hi, I am a student');  
}  

// add sayGoodBye method  
Student.prototype.sayGoodBye = function(){  
   alert('goodBye');
}  

var student1 = new Student();  
student1.sayHello();  
student1.walk();  
student1.sayGoodBye();  

// check inheritance  
alert(student1 instanceof Person); // true   
alert(student1 instanceof Student); // true
4

1 に答える 1

1

thisインスタンス変数には、キーワードを使用してアクセスできます。コンストラクターでインスタンス変数を初期化できますし、初期化する必要があります。

function Person(name) {
    this.name = name;
}

var bob = new Person("Bob");
alert(bob.name);

jsフィドル

サブクラス化すると、スーパークラスのインスタンス変数が自動的にサブクラスで使用可能になります。

于 2012-07-05T23:31:02.750 に答える