在Javascript中从子方法调用父方法。

时间:2013-04-04 19:36:09

标签: javascript class

我有一个名为person的课程:

function Person() {}

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

学生班继承自人:

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');
}

我想要的是能够从它的childs sayHello方法中调用父方法sayHello,如下所示:

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

因此,当我有一个学生实例并且我在这个实例上调用sayHello方法时,它应该现在提醒'你好'然后'嗨,我是学生'。

在不使用框架的情况下调用超级的优雅和(现代)方式是什么?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

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

你可以通过这样的方式使 little 更通用:

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,我认为这不值得抽象。