这是在看阮一峰老师的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。不知道这样理解是否核合适
添加回答
举报
0/150
提交
取消