第7章 面向对象
定义 class
js
class People {
constructor(name, position) {
this.name = name;
this.position = position;
}
signIn() {
console.log(this.name + '打卡');
}
get info() {
return this.name + ' ' + this.position;
}
set info(info) {
let [name, position] = info.split(' ');
this.name = name;
this.position = position;
}
}
let zhangsan = new People('张三', 'CEO');
zhangsan.signIn(); // 张三打卡
// getters
console.log(zhangsan.info); // 张三 CEO
// setters
zhangsan.info = '李四 CFO';
console.log(zhangsan.info); // 李四 CFO
继承
- 继承使用 extends 关键字
- 通过 super 可以调用父类的属性和方法
js
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
run() {
console.log(this.name + '跑');
}
}
class Bird extends Animal {
// 添加属性
constructor(name, age, sex) {
super(name, age);
this.sex = sex;
}
// 重写成员方法
run() {
super.run();
console.log(this.name + '跑快了还能飞');
}
}
let shizuniao = new Bird('始祖鸟', 9999, '公');
console.log(shizuniao); // Bird { name: '始祖鸟', age: 9999, sex: '公' }
shizuniao.run(); // 始祖鸟飞 | 始祖鸟跑快了还能飞
成员变量
js
// 类里面定义的变量
class People {
name = '';
}
let zhangsan = new People();
console.log(zhangsan.name); // ""
zhangsan.name = '张三';
console.log(zhangsan.name); // 张三
静态成员变量
- 静态成员变量只能通过 class 自身访问,实例无法访问
js
class Page {
static count = 0;
static increaseViewCount() {
Page.count++;
}
}
Page.count++;
console.log(Page.count); // 1
Page.increaseViewCount();
console.log(Page.count); // 2
预览: