关于super
来源:4-2 super关键字的其他内容
粉墨登场
2021-04-15 17:54:10
问题描述:
老师你好,关于super,第一个问题:super是不是只有继承的时候才会使用?。 第二个问题:在子类的原型对象中使用super,指向父类的原型对象,而在子类本身(子类的静态属性和方法)中使用super,指向的是父类本身(父类的静态属性和方法)。 第三个问题:调用super时,父类的this始终指向子类的this,这句话并不明白什么意思,视频中的例子在子类原型对象上的方法中通过super调用了父类原型对象上的方法,并将子类的this当作参数传入了,并和父类的this做了比较,没看出来哪里使用了super,所以不理解这句话:调用super时,父类的this始终指向子类的this。
在子类中使用super就分为两个场景:继承时在子类的constructor构造器的第一行使用super用于继承父类的属性和方法,第二种:以对象调用属性或方法的方式调用super,这也分两种情况,就是上面所说的第二个问题。
总结:子类中使用super,要么是用于继承,写在constructor构造器的第一行,要么是在子类原型对象上这时super指向父类的原型对象,要么是写在子类本身的静态属性或方法,这时super指向父类本身的静态属性或方法。 请老师看一下上面的几个问题和其它的理解。
1回答
好帮手慕星星
2021-04-15
同学你好,问题解答如下:
1、不是绝对的,super可以用在类的继承中,或者对象字面量中,super指代了整个prototype或者__proto__指向的对象。
super用在继承中也就是课程中讲解的那种,还有一种是手动设置对象原型指向另外一个对象,有父类,例如:

obj2的原型为obj1,所以在obj2中可以使用super,类似于继承,这里了解一下即可。
2、在继承时super不一定要写,所以不要理解的太绝对

继承的关键字是extends,有这个就可以,super也可以不写,如下

子类中继承了父类中的属性

如果子类中写了constructor,那么super是一定要写的,这点要牢记

3、这点理解是正确的

4、意思是在子类中通过super调用父类方法,虽然是父类的方法,但是父类方法中的this不指向父类,指向子类

所以课程中验证this是相等的。
自己再理解下,祝学习愉快!
相似问题