一.类的静态属性与静态方法
关键字:static
1.通过关键字static定义的属性/方法是类自己的属性/方法,而不是定义在实例对象(this)上的属 性/方法。
2.存放在类(构造函数)的键值对中,与类的原型prototype同级,
3.类可以直接调用,但是类的实例不能继承与调用,
4.如果静态方法包含this关键字,这个
this
指的是类,而不是实例,5.父类的静态属性/方法,可以被子类继承。
class People {
static category = ['man','woman','oldPeople']
static modifyInfo(newCategory){
this.category.push(newCategory)
}
}
People.modifyInfo('child')
console.dir(People)
class Child extends People {
constructor() {
super()
}
}
Child.modifyInfo('111')
console.dir(Child)
二.类的私有属性与私有方法
关键字:#
1.通过关键字#定义的属性/方法,只能在类的内部访问,外部不能访问
2.私有属性/方法是定义在类的实例对象(this)上的,在内部只能类的实例调用
3.但是私有属性与私有方法不限于this调用,只要在类的内部,类的实例都可以调用,eg:将类的实例当作参数传入类的内部,就可以调用
4.子类不能继承私有属性与私有方法,且无法直接调用
class Student {
#studentsInfo = []
#modifyInfo(student) {
this.#studentsInfo.push(student)
}
sex = 'male'
member(s) {
this.#modifyInfo(s)
console.log(this.#studentsInfo);
}
setSex() {
let s = new Student
s.#modifyInfo({name:'李莉莉',age:10,sex:'female'})
console.log(s.#studentsInfo);
}
}
let student = new Student
student.member({name:'李明明',age:10})
console.log(student)