有如下代码: class Parent { constructor() { console.log('parent constructor', this.name) this.init() this.logNum = this.logNum.bind(this) } name = (() => { console.log('Parent name init') return 'Parent' })() num = -1 init() { console.log('parent init', this.name) } logNum() {} } class Child extends Parent { constructor() { console.log('Child constructor') super() console.log('super exec finish', this.num) } name = 'Child' num = (() => { console.log('Child num init') return 99 })() init() { console.log('Child init', this.name) super.init() this.num = 10 } logNum() { console.log(this.num) } } const { logNum } = new Child() logNum() 打印结果: Child constructor Parent name init parent constructor Parent Child init Parent parent init Parent Child num init super exec finish 99 99 **1、在实例化Child时,Parent.constructor中的name为什么是'Parent'?** `Child.constructor`中调用`super`,内部`this`指向为`Child`,所以不应该是'Child'吗? **2、诸如x = 'a'的实例属性是什么时候完成初始化的?** `Child.constructor`中调用`super`时,可以看到打印了`'Parent name init'`,说明实例属性是在构造器方法之前就初始化了吧,那为什么`Child.num`是在`super`调用结束后才初始化?