是否可以在子类ES 2015的实例中调用重写的方法?

问题描述 投票:1回答:4

最近,我在查看技术面试问题时也遇到了类似的问题,这使我更普遍地考虑使用JavaScript进行对象继承。

这是一些简单的代码:

class Car {
  constructor(make,model) {
    this.make = make
    this.model = model
  }

  emitsCarbon() {
    return true
  }

}

class Hybrid extends Car {
  constructor(...args) {
    super(...args)
  }
  emitsCarbon() {
    return false
  }
}

let car1 = new Hybrid('toyota', 'prius')

car1.emitsCarbon() // returns false

我很好奇的是,是否有一种方法可以调用原始的emitsCarbon()方法,该方法在子类的实例中返回true(从父类返回)?

我的假设是不,一旦被重写,我将不得不在car1实例中再次重写该方法,以使其在调用函数时返回true。

我想要填补的知识不足是:在JavaScript中,可以在类继承中引用备份级别并查看给定子类实例的所有父类属性(方法等)。在其他语言(例如Java)中,这似乎是可行的,但是我对这些语言的了解不多。

最后,这是否有用,即是否应该更谨慎地覆盖不应覆盖的属性,我不确定。我认为不应该。但是,通常更好地理解在类和类继承层次结构中上一层是很有用的。

这不是以下内容的副本:How to call a parent method from child class in javascript?

我了解子类中父方法的调用,但是,我不理解子类instance

中父方法的调用(如果可能的话,似乎不可能)。

最近,在查看技术面试问题时,我看到了一个类似的问题,这使我更加思考JavaScript中的对象继承。这是一些简单的代码:Car {...

javascript inheritance es6-class
4个回答
0
投票

我不敢相信这不是重复的,但是我找不到它(所有现有的Q / A都与老式的构造函数一起处理,所以...


0
投票

另一个答案适合修改子类。


0
投票

当子项覆盖父方法时,除非您在子项本身的方法定义中不使用'super'


0
投票

这是JavaScript,因此可以。无论如何,没有类,只是原型继承和一些语法糖。

© www.soinside.com 2019 - 2024. All rights reserved.