最近,我在查看技术面试问题时也遇到了类似的问题,这使我更普遍地考虑使用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 {...
我不敢相信这不是重复的,但是我找不到它(所有现有的Q / A都与老式的构造函数一起处理,所以...
另一个答案适合修改子类。
当子项覆盖父方法时,除非您在子项本身的方法定义中不使用'super'
这是JavaScript,因此可以。无论如何,没有类,只是原型继承和一些语法糖。