无法访问构造函数代码

时间:2018-04-01 15:18:27

标签: ecmascript-6 ecmascript-next

我将类方法作为参数传递给新的类实例,如下所示:

class Abc {
    constructor() {
        this.a = () => { };
    }
    b = new Def(this.a);
}

我在浏览器控制台中“无法读取未定义的属性”。为什么a undefined内有b = new Def(this.a) b = new Def()?在调试时,我发现浏览器抛出错误并且永远不会到达构造函数代码。为什么会这样?

注意:我使用的是babel,所以我可以使用类字段,因此MethodVistor.visitMethodInsn()是一个有效的语法。

1 个答案:

答案 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