【发布时间】:2018-09-10 23:26:41
【问题描述】:
我将一个类方法作为参数传递给一个新的类实例化,如下所示:
class Abc {
constructor() {
this.a = () => { };
}
b = new Def(this.a);
}
我在浏览器控制台中得到“无法读取未定义的属性 a”。为什么a undefined 在b = new Def(this.a) 里面?在调试时,我发现浏览器会抛出错误并且永远无法到达构造函数代码。为什么会这样?
注意:我使用的是 babel,所以我可以使用类字段,因此 b = new Def() 在这里是一个有效的语法。
【问题讨论】:
-
您能否重新创建一个工作示例来演示该问题?
-
我无法发布确切的代码,因为我正在使用阻止发布到 stackoverflow 的远程计算机。但是,我意识到问题在于初始化相关变量。从问题的上下文来看,我在
Abc的constructor中初始化a,例如this.a = () => {}。我在调试时发现程序并没有奇怪地没有进入constructor,所以this.a=...永远不会被执行,因此this.a是未定义的。但我不明白为什么构造函数代码没有被执行?已修改相关代码以反映这一点。
标签: ecmascript-6 ecmascript-next