我有一个类BMW,它扩展了类Car并覆盖了一个方法printModel:
class Car{
constructor(model){
this.model = model
}
printModel(){
console.log(this.model)
}
}
class BMW extends Car{
constructor(model, color){
super(model);
this.color = color
}
printModel(){
console.log(this.model, this.color)
}
}
let bmw = new BMW('F6', 'blue')
bmw.printModel() //will print : 'F6 blue'
bmw.super.printModel()// expected: 'F6' but not working
如何在这个BMW类的一个实例上调用一个类的超方法?
发布于 2018-09-29 14:26:30
如果父类方法需要与子类方法一起使用,这意味着类设计出错,覆盖父方法是错误的。
可能是:
class Car{
...
printGenericModel(){
console.log(this.model)
}
}
class BMW extends Car{
...
printModel(){
console.log(this.model, this.color)
}
}或者在父类无法重构的情况下:
class Car{
...
printModel(){
console.log(this.model)
}
}
class BMW extends Car{
...
get printGenericModel(){
return super.printModel;
}
printModel(){
console.log(this.model, this.color)
}
}在BMW实例上,这两种方法都以printGenericModel和printModel的形式提供。
https://stackoverflow.com/questions/52563776
复制相似问题