javascript - ES6中class和super的疑惑
本文介绍了javascript - ES6中class和super的疑惑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
class Book{
constructor(book1,book2) {
this.book1 = book1;
this.book2 = book2;
}
getName() {
alert(this.book1+this.book2)
}
}
class book extends Book{
constructor() {
super(book1,book2);
}
toSay() {
super.getName();
}
}
var cp = new book("javascript guide","javascript best pattern");
看了阮一峰的ES6教程,对于class 和 super还是有点疑惑,首先创建一个Book类
然后创建一个子类book继承父类Book,super调用父类的构造函数,在toSay中调用父类的getName()方法,浏览器报错
以下是阮一峰有关class的例子,代码结构只是比我多在子类上定义一个color属性,如果我的子类不需要自己的属性,完全调用父类的属性和方法,不行吗?
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
class ColorPoint extends Point {
constructor(x, y, color) {
super(x, y); // 调用父类的constructor(x, y)
this.color = color;
}
toString() {
return this.color + ' ' + super.toString(); // 调用父类的toString()
}
}
还有一个疑惑
阮老师说super()在子类中是必须定义的
可是我的代码并没有super,浏览器执行了
请问这是为什么?
解决方案
可以,子的book没有传参数
class book extends Book{
constructor(book1, book2) {
super(book1, book2);
}
toSay() {
super.getName();
}
}
这篇关于javascript - ES6中class和super的疑惑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文