75 阅读1分钟
总结:1.类中的构造器不是必须的,要对实例进行初始化的操作,如添加指定属性时
     2.如果A类继承了B类,且在A类中写了构造器,那么A类中构造器中的super是必须要调用的
     3.类所有的方法都放在了类的原型对象上,供实例去使用

1.创建一个类

class Person {
		constructor(name, age) {
		    this.name = name;
		    this.age = age
		}
		speak() {
		// speak方法放在类的原型对象时
		// 原型链的查找规则,当读取了属性自身不存在属性,调用了自身不存在的方法,会沿着原型链去寻找
		// 供实例使用
		// 通过实例调用方法时,方法中的this就是实例自身
                        console.log(`我叫${this.name}`)
                    }
		}
// 创建类的实例对象
	const p1 = new Person('tom', 18)
	const p2 = new Person('marry', 18)

2.类的继承

class Student extends Person {
	// 当如果你要写父类没有的属性,就需要写一个构造器
	constructor(name, age, grade) {
		super(name, age, grade)
		this.name = name;
		this.age = age;
		this.grade = grade;
		// 1.满足以下三点就需要调用super
		// 定义了子类
		// 继承了person
		// 继承了构造器
		// 2.并且super必须要在最前边
		// 3.父类的方法在原型链上						
	}
	// 重写从父类继承过来的方法
	speak() {
		console.log(`我叫${this.name}`)
		}
	study() {
		console.log('123')
		}
}
	const s1 = new Student('amy', 16)