编辑:该问题与How to extend a class without having to using super in ES6?不同-尽管答案是相关的,但这显然是一个不同的问题。它与一个特定的错误有关,涉及Person
和CreationEvent
的两个主要类实际上并不是彼此继承的。
我有两个ES6类,Person
和CreationEvent
(CreationEvent
继承自Event
)。我希望在创建new CreationEvent
时创建一个new Person
(因为CreationEvent
是个人帐户历史记录中的事件的一部分)。
自行运行new CreationEvent()
效果很好。但是我无法运行new Person()
。
即使使用简化版本的代码仍然失败:
class Event {
constructor() {
this.time = Date.now()
this.tags = []
}
}
class CreationEvent extends Event {
constructor() {
this.description = "Created"
}
}
class Person {
constructor(givenName, familyName, email) {
var creationEvent = new CreationEvent()
}
}
运行new Person()
返回
ReferenceError:访问'this'或从派生构造函数返回之前,必须在派生类中调用超级构造函数
如何在另一个Object的构造函数中创建一个新的ES6 Object?
答案 0 :(得分:4)
您需要在super()
类中调用CreationEvent
,因为它扩展了Event
类。像这样:
class CreationEvent extends Event {
constructor() {
super();
this.description = "Created"
}
}