Class
class
类相当于对构造函数的封装
1 |
|
Tips
- 类内部的方法不可枚举(构造函数可以)
- 必须使用new调用(构造函数可以直接调用)
- 类不存在变量提升
static 静态方法
类中的方法,都会被实例继承;但加上
static
关键字,该方法就只能通过类来调用
静态方法中的this指向类,而不是类的实例
1 |
|
静态方法可以被继承
1 |
|
# 私有属性、私有方法
私有属性只能在类的内部使用(this.#count)
1 |
|
new.target 返回当前的Class(也可用于构造函数)
当父类使用new.target, 子类继承父类的时候, new.target指向子类(此项特性可以写出不能独立使用, 必须继承之后才能使用的类)
extends 继承
在子类的constructor中先调用super(),才能使用this
super()内部的this指向的是子类的实例
1 |
|
super作为对象时, 在普通方法中, 指向父类的原型对象
super作为对象时, 在静态方法中, 指向父类
Test Example
1 |
|
上面代码中,super.x赋值为3,这时等同于对this.x赋值为3。而当读取super.x的时候,读的是A.prototype.x,所以返回undefined。
public、 private、 protected
修饰符 | 当前类 | 同包 | 子类 | 其它包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
- public, 公共的,被public修饰的类、方法、属性、可以跨类和跨包访问.
- protected, 受保护的,被protected修饰的类、方法、属性、只能被本类、本包、不同包的子类所访问.
- default, 默认的,在这种模式下,只能在同一个包内访问.
- private, 私有的,被private修饰的类、方法、属性、只能被本类的对象所访问.
当构造函数修饰为 private 时, 该类不允许被继承或者实例化
1 |
|
当构造函数修饰为 protected 时, 该类只允许被继承
1 |
|
参数属性
修饰符和readonly还可以使用在构造函数参数中,等同于类中定义该属性同时给该属性赋值
1 |
|
抽象类
abstract 用于定义抽象类和其中的抽象方法
抽象类不允许被实例化
抽象类中的抽象方法必须被子类实现
- [1] ECMAScript 6 入门
- [2] Typescript入门教程
本文作者: 孟 虎
本文链接: https://menghu1994.github.io/blog/2023/10/Javascript/Class/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!