0

私は人と呼ばれるクラスを持っています:

function Person() {}

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

Student クラスは person から継承します。

function Student() {
  Person.call(this);
}

Student.prototype = Object.create(Person.prototype);

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

私が望むのは、次のように、その子の sayHello メソッド内から親メソッドの sayHello を呼び出せるようにすることです。

Student.prototype.sayHello = function(){
      SUPER // call super 
      alert('hi, I am a student');
}

そのため、学生のインスタンスがあり、このインスタンスで sayHello メソッドを呼び出すと、「こんにちは」と「こんにちは、私は学生です」というアラートが表示されるはずです。

フレームワークを使用せずにスーパーを呼び出す、エレガントで (現代的な) 素敵な方法は何ですか?

4

1 に答える 1

2

できるよ:

Student.prototype.sayHello = function(){
    Person.prototype.sayHello.call(this);
    alert('hi, I am a student');
}

次のようにして、もう少し一般的なものにすることもできます。

function Student() {
    this._super = Person;
    this._super.call(this);
}

...

Student.prototype.sayHello = function(){
    this._super.prototype.sayHello.call(this);
    alert('hi, I am a student');
}

...とはいえ、TBH、そこで抽象化する価値はないと思います。

于 2013-04-04T19:37:33.117 に答える