- 类中的构造器
constructor
不是必写的,要对实例进行初始化的操作,如添加指定属性时才写 - 如果子类继承了父类,且子类写了构造器,那么子类构造器中的
super
是必须要调用的,且要放在最前面 - 类中定义的所有方法,都是放在了类的原型对象上,供实例去使用
// 创建一个 Person 类
class Person {
// 构造函数
constructor(name, age) {
// 构造函数中的 this 是谁? ———— 类的实例对象
this.name = name;
this.age = age;
}
// 一般方法
speak() {
// speak 方法放在了哪里? ———— 类的原型对象上,供实例使用
// 通过 Person 实例调用 speak 时,speak 中的 this 就是 Person 实例
console.log(`我的名字是:${this.name},我的年龄是${this.age}`)
}
}
// 创建一个 Student 类,继承于 Person 类
class Student extends Person {
constructor(name, age, grade) {
super(name, age);
this.grade = grade;
}
// 重写从父类继承过来的方法
speak() {
console.log(`我的名字是:${this.name},我的年龄是${this.age},今年上${this.grade}`)
}
}
// 创建一个 Person 的实例对象
const p1 = new Person('tom', 15);
console.log(p1);
p1.speak();
// 创建一个 Student 的实例对象
const s1 = new Student('lily', 16, '高一');
console.log(s1);
s1.speak();