我有一个包含以下代码的文件:
class Animal {
doSomething = () => {
return 'Hi.';
};
}
class Dog extends Animal {
doSomething = () => {
return super.doSomething() + ' Woof!';
};
}
console.log(new Dog().doSomething());
注意:尝试运行上面的代码段可能行不通,因为我不知道如何让它使用我的 Babal 设置。
无论如何,当我使用 Babel 编译它并在 Node 中运行它时,我收到以下错误:
/Users/elias/src/classFieldTest/build/classFieldTest.js:15
return super.doSomething() + ' Woof!';
^
TypeError: (intermediate value).doSomething is not a function
at Dog.doSomething (/Users/elias/src/classFieldTest/build/classFieldTest.js:15:26)
at Object.<anonymous> (/Users/elias/src/classFieldTest/build/classFieldTest.js:21:23)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3
我正在使用带有stage-2
预设的 Babel 6.26.0 和 Node 8.11.1。如果有人关心,我可以显示我正在使用的命令。
为什么会这样?我猜这super
不能用于访问类字段,但是我应该怎么做呢?如果我将 的doSomething
方法更改Animal
为传统方法 ( doSomething() { return 'Hi.'; }
),它会起作用,但我宁愿避免使用传统方法,因为它们重新定义的方式this
以及它引起的所有混乱。
有没有办法访问超类的类字段?