为了账号安全,请及时绑定邮箱和手机立即绑定

es6类里的super,有些疑惑

es6类里的super,有些疑惑

缥缈止盈 2018-12-27 14:15:34
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();对两次console出来的结果不理解。这段代码出自阮一峰的es6
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

设置 super.x 时,x 属性被设置在 this 上(6.b. [[Set]] 4.d, 5.f),而 this 指向的是正在创建的 b 对象。

访问 super.x 时,依旧是相同的引用,GetValue 调用的了上级类的 [[Get]] 方法,走到了 4.c 就返回了 undefined,并没有 Receiver(this 对象)的什么事。


PS: JavaScript 真是复杂而又奇怪啊。


查看完整回答
反对 回复 2019-01-08
  • 1 回答
  • 0 关注
  • 362 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信