super作为对象使用
来源:4-3 super
慕数据5191420
2022-04-19 15:08:02
class Person {
constructor(name) {
this.name = name;
}
speak() {
console.log('Person speak');
console.log(this);
}
}
class Child extends Person {
constructor(name) {
super(name)
super.speak()
}
}
let c1 = new Child('jack');//执行了speak函数,打印出Person speak class Person {
constructor(name) {
this.name = name;
}
speak() {
console.log('Person speak');
console.log(this);
}
}
class Child extends Person {
constructor(name) {
super(name)
}
speak() {
super.speak()
console.log('Child speak');
}
}
let c1 = new Child('jack');//没有执行了speak函数问题描述:
代码1,super.speak写在构造器内部,代码2没有写在构造器内,为什么结果不同,哪种方式更好?
1回答
好帮手慕久久
2022-04-19
同学你好,这两种写法都不常见,简单了解即可。第二种写法中,super在子类的speak方法中,由于没有通过子类调用speak方法,所以没有执行speak。需要做如下调整:

此时两种写法执行结果就一样了。
第一种写法,super在constructor中,实例化子类时,constructor会自动执行,不需要手动调用,所以能执行speak:

祝学习愉快!
相似问题
回答 1
回答 1