class 相关
2021-12-16 本文已影响0人
IOneStar
class
static关键字:
在 class 中的方法或者属性前面加上 static,就变成了静态方法或静态属性。它们都是定义在类上面的,不会被实例继承。如果静态方法包含this关键字,这个this指的是类,而不是实例。
实例属性除了可以定义在 contructor 中,还可以定位在类的顶层。
class 中的取值函数(getter)和存值函数(setter):
类内部的 get,set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
存值函数和取值函数是设置在属性的 Descriptor 对象上的。
class的表达式, const myClass = class A {}
, A
可以在 class的内部使用,代指当前类。外部使用要使用 myClass
。类的内部使用 this,指的是类的实例
Class 的继承
extends 用来继承
super 表示父类的构造函数,继承的时候必须在子类的构造函数中执行一次。不然 JS 引擎会报错
TS 中的 class 类
-
public
,公有的,在任何地方都可以被访问到,默认所有的都是 public -
private
,私有的,不能在声明它的类的外部访问 -
protected
,允许在子类中访问,只允许被继承 -
readonly
:只读 -
abstract class
,抽象类不允许被实例化。
装饰器
@+函数名
类的装饰,函数的参数 target 为类本身,一个参数不够,可以在装饰器外面再封装一个函数
方法的修饰,函数接受 3 个参数,target,name, descriptor。
- target 为类的原型对象,即 Person.prototype,因为这个时候实例还未生成,只能去装饰原型
- name: 所要装饰的属性名
- descriptor: 该属性的描述对象
- value,
- enumerable
- configurable,
- writable