什么是修饰符
修饰符就是一些关键字,可以用来限定类的成员的性质,访问修饰符的作用就是用于限制别人乱用类中的东西,比如说常见的 public 用来表示共有的属性或者方法,那一共有多少种修饰符呢?
- public(公开):可以在任何地方访问
- protected(受保持):可以在当前类和子类中访问,在类的外部无法访问
- private(私有):只能在当前类中访问
enum Color {
red,
yellow,
blue
class Car {
// 如果不加访问修饰符 则当前成员默认是公开的 所有人都可以访问的
public color: Color
constructor() {
this.color = Color.red;
}
// 加了private之后,当前成员就只能在当前类中使用了!
private run() {
}
// 加了protected之后,当前成员就只能在当前类或者子类中使用了!
protected loadPeople() {
}
}
let byd = new Car();
class Audi extends Car {
sayHi() {
console.log(this.color)
}
}
let audi = new Audi();
Class类
ES6引入了 Class(类)这个概念,作为对象的模板。
JS 中并没有一个真正的 class 原始类型, class 仅仅只是对原型对象运用语法糖。所以,只有理解如何使用原型对象实现类和类继承,才能真正地用好 class。
class 类 继承
通过extends关键字实现类的继承
//es6继承 先声明父类,再声明子类,通过extends继承方法,通过super()继承属性
//声明父类
class User {
constructor(name, password) {
this.name = name
this.password = password
}
showName() {
console.log('用户名称', this.name);
}
showPass() {
console.log('用户密码', this.password);
}
}
class VipUser extends User {
constructor(name, password, level) {
super(name, password)
this.level = level
}
showLevel() {
console.log('用户等级', this.level);
}
}
var vip = new VipUser('admin', '123456', 3)
vip.showName()
vip.showPass()
vip.showLevel()
通过super关键字进行拓展父类构造器或方法
super作用
- 子类使用构造器
constructor的时候,必须使用super关键字,用来扩展构造器 - 子类同名方法会覆盖父类同名方法,使用
super关键字后则可以调用到父类的同名函数
class Person {
name;
age;
constructor(name, age) {
this.name = name
this.age = age
}
say() {
return `我是${this.name},我今年${this.age}岁`
}
}
class Student extends Person {
money;
constructor(name, age, money) {
super(name, age)//必须先调用super,才能使用constructor,才能使用this对象
this.money = money
}
say() {
return `我是${this.name},我喜欢敲代码`
}
study() {
return `我是${this.name},我喜欢敲干饭`
}
}
let a = new Student("小王", 21, "100w")
console.log(a);