我将类方法作为参数传递给新的类实例,如下所示:
class Abc {
constructor() {
this.a = () => { };
}
b = new Def(this.a);
}
我在浏览器控制台中“无法读取未定义的属性”。为什么a
undefined
内有b = new Def(this.a)
b = new Def()
?在调试时,我发现浏览器抛出错误并且永远不会到达构造函数代码。为什么会这样?
注意:我使用的是babel,所以我可以使用类字段,因此MethodVistor.visitMethodInsn()
是一个有效的语法。
答案 0 :(得分:3)
这是类字段的工作方式,它们在构造函数体之前进行评估(但在var object_array = document.body.querySelector('.group_01:checked');
之后)。在第2行之前评估第1行,并且构造函数和super()
字段的排序顺序并不重要:
b
由于类字段已被使用,为了维持正确的执行顺序,它应该是:
constructor() {
this.a = () => { }; // 2
}
b = new Def(this.a); // 1