求大佬指点哈!感觉class的super用作对象还是有点绕,请教大佬给一个透彻的解释求解答!

这是在看阮一峰老师的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();
婷婷同学_
浏览 258回答 2
2回答

慕哥9229398

super.x=3这个是数据负值,内部调用了setter方法,此时this是子类的实例,相当于给B的实例的x属性赋值了。而supper.x这是取值,实际上是取A.prototype.x的值,所以返回undefined。不知道这样理解是否核合适
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript