正在回答
同学你好,问题解答如下:
1、super作为对象,在子类静态方法cSay中使用时,指向的是父类,也就是super.pSay(),调用的是父类中的静态pSay方法。而pSay方法是在子类中调用中,所以使用this指向的是子类。简单理解就是super指向的是父类,而方法中this还是看在哪个作用域下使用的。
username是实例上的属性,不是类上的属性,不能通过类去调用,只能通过实例化的对象调用


而pSay方法中的this指向的是子类,所以获取不到username属性值,为undefined。
2、super作为对象,在子类原型方法cShow中使用时,指向的是父类的原型对象,也就是super.pShow(),调用的是父类原型上的pShow方法。而cShow是通过实例化的c1对象调用的,所以this指向实例化的对象。简单理解就是super指向的是父类的原型,而方法中this还是看在哪个作用域下(或者哪个对象下)使用的。
color属性定义在Parent实例上,后来被child继承,所以也会有color属性,值为red 。但是通过super.color获取不到,父类原型上没有color属性,所以为undefined。
3、super.color可以等价于Parent.proptype.color ,没问题。
4、静态方法不是挂载到类原型上的,所以理解错误。简单理解:子类静态方法中super指向的是父类,super.xxx访问父类静态方法,子类原型方法中super指向的父类原型,super.xxx访问父类原型方法。
祝学习愉快!
我的理解是 子类调用super.XXXX的原理是 访问父类的属性或方法 但是 一旦父类的super.XXXX属性里有this 其实还是指向子类的是吗 子类本身或者继承上 有就有 没有就没有
然后最后一个 super.color是调用父类的方法 解析上 是这么说的(super.color这句代码相当于访问父类原型上的color属性) 是不是等价于 Parent.proptype.color 而不是 (比方Parent被实例叫p1)new出来实例p1.color
总结就是 子类调用super.XXX永远访问的都是父类原型上 也就是静态的方法是吗 还是说 子类在静态方法中调用super就是访问父类的静态方法 不是静态方法 就访问实例呢 有点搞不懂

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星