《ECMAScript 6 入门》Class的继承案例代码问题?

《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.
请问是书上描述错了,还是我理解错了?


有只小跳蛙
浏览 367回答 1
1回答

慕桂英4014372

楼主注意,如果你是在Babel转码下执行这段,结果还真的不是3...可以看看我的这篇文章:Babel转码对于 "super" 处理的注意事项
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript