类的基本知识
07_类的基本知识
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>1_类的基本知识</title>
</head>
<body>
<script type="text/javascript">
/*
总结:
1.类中的构造器不是必须要写的, 要对实例进行一些初始化的操作, 如添加指定属性时才写.
2.如果A类继承了B类, 且A类中写了构造器, 那么A类构造器中的super是必须要调用的.
3.类中所定义的方法, 都放在了类的原型对象上, 供实例去使用.
*/
// 创建一个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;
this.school = "尚硅谷";
}
// 重写从父类继承过来的方法
speak() {
console.log(
`我叫${this.name}, 我年龄是${this.age},我读的是${this.grade}年级`
);
this.study();
}
study() {
// study方法放在了哪里?——类的原型对象上, 供实例使用
// 通过Student实例调用study时, study中的this就是Student实例
console.log("我很努力的学习");
}
}
class Car {
constructor(name, price) {
this.name = name;
this.price = price;
// this.wheel = 4
}
// 类中可以直接写赋值语句,如下代码的含义是:给Car的实例对象添加一个属性,
// 名为a, 值为1
a = 1;
wheel = 4;
static demo = 100;
}
const c1 = new Car("奔驰c63", 199);
console.log(c1);
console.log(Car.demo);
</script>
</body>
</html>