《ECMAScript 6 入门》 #### Class的继承章节中
原案例代码如下:
class A {
constructor() {
this.x = 1;
}
}
class B extends A {
constructor() {
super();
this.x = 2;
super.x = 3;
console.log(super.x); // undefined
console.log(this.x); // 3
}
}
let b = new B();
原书对这段代码的解释
上面代码中,super.x赋值为3,这时等同于对this.x赋值为3。而当读取super.x的时候,读的是A.prototype.x,所以返回undefined。
但实际环境测试次代码,console.log(this.x)此语句实际输出的是2,不是3.
请问是书上描述错了,还是我理解错了?
楼主注意,如果你是在Babel转码下执行这段,结果还真的不是3...
可以看看我的这篇文章:Babel转码对于 "super" 处理的注意事项