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

有没有童鞋遇到过同样的问题:感觉class的super用作对象还是有点绕,请教大佬给一个透彻的解释求指导!

有没有童鞋遇到过同样的问题:感觉class的super用作对象还是有点绕,请教大佬给一个透彻的解释求指导!

一只甜甜圈 2019-11-03 09:50:41
这是在看阮一峰老师的es6中关于类遇到的问题。代码如下,虽然答大体意思我知道,不过不是太能理解super.x输出为undefined。classA{constructor(){this.x=1;}}classBextendsA{constructor(){super();this.x=2;super.x=3;//super.x.call(this),即为this.x。但属性没有call方法//super.x即为A.prototype.x,A中的x为实例的属性,而实例的属性和方法都无法在原型上访问到(能懂)console.log(super.x);//undefined为什么这里读到的一定是A.prototype.x,而不会是this.x???console.log(this.x);//3}}letb=newB();
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

super.x=3这个是数据负值,内部调用了setter方法,此时this是子类的实例,相当于给B的实例的x属性赋值了。而supper.x这是取值,实际上是取A.prototype.x的值,所以返回undefined。不知道这样理解是否核合适
                            
查看完整回答
反对 回复 2019-11-03
  • 2 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

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