mik*_*ana -2 javascript ecmascript-6 es6-class
编辑:这个问题不同于如何扩展一个类而不必在 ES6 中使用超级?- 虽然答案是相关的,但这显然是一个不同的问题。它涉及到一个特定的错误,并且两大类参与Person和CreationEvent实际上并不相互继承。
我有两个 ES6 类,Person并且CreationEvent(CreationEvent继承自Event)。我希望new CreationEvent在我制作 a时制作 a 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()
}
}
Run Code Online (Sandbox Code Playgroud)
运行new Person()返回
ReferenceError:在访问“this”或从派生构造函数返回之前,必须在派生类中调用超级构造函数
如何在另一个对象的构造函数中创建一个新的 ES6 对象?
您需要super()在CreationEvent类中调用,因为它扩展了Event类并且需要初始化。像这样:
class CreationEvent extends Event {
constructor() {
super();
this.description = "Created"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1181 次 |
| 最近记录: |