【发布时间】:2018-07-20 09:24:41
【问题描述】:
我正在创建一个在 JavaScript 中扩展 Object 的类,并期望 super() 在构造此类的新实例时初始化键/值。
class ExtObject extends Object {
constructor(...args) {
super(...args);
}
}
const obj = new Object({foo:'bar'});
console.log(obj); // { foo: 'bar' }
const ext = new ExtObject({foo:'bar'});
console.log(ext); // ExtObject {}
console.log(ext.foo); // undefined
为什么在这个例子中ext 上的foo 没有定义为'bar'?
编辑
【问题讨论】:
-
虽然我不能回答你的问题,但我不禁想知道你为什么还要
extend Object。 -
因为我希望扩展类的实例与 Object 的行为相同,并具有自定义功能。我明白你的意思,因为我猜想在不扩展
Object并在构造函数中使用Object.assign()时可以创建相同的功能,正如 Gildas.Tambo 所建议的那样。但这真的让我想知道为什么它不以这种方式工作.. -
这个问题的有趣之处在于 Babel 可以转译这段代码以给出正确的结果
-
问题就是问题。 没有理由为什么它应该包含指向答案的链接。您可以通过接受将答案置顶,仅此而已。