class User {
static #MAX_INSTANCES = 2;
static #instances = 0;
name;
constructor(name) {
User.#instances++;
if (User.#instances > User.#MAX_INSTANCES) {
throw new Error('Unable to create User instance');
}
this.name = name;
}
}
new User('张三');
new User('李四');
new User('王五'); // throws Error
JavaScript 类用构造函数初始化实例,定义字段和方法。甚至可以使用
static
关键字在类本身上附加字段和方法。继承是使用
extends
关键字实现的:可以轻松地从父类创建子类,super
关键字用于从子类访问父类。要利用封装,将字段和方法设为私有以隐藏类的内部细节,私有字段和方法名必须以
#
开头。初始化:
constructor()
constructor(param1, param2, ...)
是用于初始化实例的类主体中的一种特殊方法。可以设置字段的初始值或进行任何类型的对象设置。字段
类字段是保存信息的变量,字段可以附加到两个实体:
字段有两种级别可访问性:
public
:该字段可以在任何地方访问private
:字段只能在类的主体中访问公共实例字段
私有实例字段
公共静态字段
定义类常量或存储特定于该类的信息
私有静态字段
隐藏静态字段的实现细节
方法
getter
和setter
模仿常规字段,但是对如何访问和更改字段具有更多控制。在尝试获取字段值时执行getter
,而在尝试设置值时使用setter
。静态方法是直接附加到类的函数,它们持有与类相关的逻辑,而不是类的实例。
继承: extends
JavaScript 中的类使用
extends
关键字支持单继承。在class Child extends Parent { }
表达式中,Child
类从Parent
继承构造函数,字段和方法。父构造函数:
constructor()
中的super()
如果希望在子类中调用父构造函数,则需要使用子构造函数中可用的
super()
特殊函数。父实例:方法中的
super
如果希望在子方法中访问父方法,可以使用特殊的快捷方式
super
。参考资料