class类
class类
JS里的类就是构造函数的语法糖
基本用法
- 类里面有个constructor函数,可以接收传递过来的参数,同时返回实例对象
- constructor函数只要new生成实例时,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数
- 公共属性放在constructor中,公共方法直接在类里面写函数声明,会自动添加至原型对象中
- class类没有变量提升,所以必须先定义类,才能通过类实例化对象
- super()调用父类里的constructor方法,可以向里面传参,就等于Father.call(this,x,y),super 必须在子类的this前面调用
- class里面的方法的this指向的是调用者,如果调用者不是类的实例,就需要改变this的指向
1 | class Person { |
关键词
constructor
constructor()方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor()方法,如果没有显式定义,一个空的constructor()方法会被默认添加。
super
super这个关键字,既可以当作函数使用,也可以当作对象使用。
super作为函数调用时,代表父类的构造函数。子类的构造函数必须执行一次super函数。super虽然代表了父类A的构造函数,但是返回的是子类B的实例
super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。
getter、setter
在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
static
如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。
私有属性
ES2022正式为class添加了私有属性,方法是在属性名之前使用#表示。私有属性只能在类的内部使用(this.#count)。如果在类的外部使用,就会报错。
评论
LivereValine