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