我有一个名为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方法时,它应该现在提醒'你好'然后'嗨,我是学生'。
在不使用框架的情况下调用超级的优雅和(现代)方式是什么?
答案 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,我认为这不值得抽象。