在平时开发过程中,如果只专注于业务开发,很少会接触到 class 类。刚好自己正在写一个前端用于截图的插件,前面也学过类但是许久不用很快就忘记了。这里再次从小白开始学习下。
类是什么
类是用于创建对象的模板。它们用代码封装数据以对其进行处理。JS 中的类建立在原型之上,同时还具有一些类独有的语法和语义。我的理解类是用来批量创建对象,作为在封装中可以共享对象和方法。
可以从以下三个方面表述一个类元素的特征:
- 主体:getter、setter、方法、字段
- 位置:静态的或位于实例上
- 可见性:公有或私有
由于在 js 不常用类,我经常会把类的一些关键词忘记,而这三种如果组合起来的话会有 它们总共有 16 种可能的组合。记住上面三方面的特征,就很好记忆那些关键词的作用。
主体
种类理解为可以为类定义具体的内容的地方,比如下列我定义了一个名叫 Test 的类,并且写为该类写了一个方法 constructor 方法 并添加一些 字段,这样我就定义好了一个类。
class Test {
color: string
movement: string
age: number
constructor(color: string,movement: string,age: number) {
this.age = age
this.color = color,
this.movement = movement
}
}
constructor
constructor 方法在类中属于特殊方法,它会在类初始化的时候执行,经常用于初始化一些参数。除了定义 constructor 我们可以定义任何方法在类中。
位置
上面我们可以为类定义 方法和属性,定义的这些方法和属性它归属于哪里,是位置来决定的。位置分为 静态的或位于实例上
- 静态成员(Static Members):静态成员包括静态方法和静态属性,它们属于类本身,而不是类的实例。静态成员可以直接通过类名访问,而不需要实例化类
class Test {
color: string
movement: string
age: number
constructor(color: string,movement: string,age: number) {
this.age = age
this.color = color,
this.movement = movement
}
static say(msg:string) {
console.log(msg)
}
}
// 不需要实例化,可以直接调用
Test.say('hello,World')
- 实例成员(Instance Members):实例成员包括实例方法和实例属性,它们属于类的每个实例。实例成员在类的实例化过程中创建,可以通过实例对象访问
class Test {
color: string
movement: string
age: number
constructor(color: string,movement: string,age: number) {
this.age = age
this.color = color,
this.movement = movement
}
sayHello() {
console.log(`Hello, my old year is ${this.age}`); // 实例方法
}
}
可见性
可见性分为公有 或 私有
- 公有成员(Public Members):默认情况下,类的所有成员都是公有的,可以在类的外部访问。
class Test {
color: string
movement: string
age: number
static className = '人类'
// 私有属性
#_privateKey = '1'
constructor(color: string,movement: string,age: number) {
this.age = age
this.color = color,
this.movement = movement
//调用私有方法
this.#_privateFn()
}
#_privateFn() {
console.log(`我是内部方法,仅类内部可以访问`)
}
}
- 私有成员(Private Members):私有成员只能在类的内部访问,不能在类的外部访问。私有成员通常使用
#
作为前缀来声明
class Test {
color: string
movement: string
age: number
static className = '人类'
// 私有属性
#_privateKey = '1'
constructor(color: string,movement: string,age: number) {
this.age = age
this.color = color,
this.movement = movement
//调用私有方法
this.#_privateFn()
}
#_privateFn() {
console.log(`我是内部方法,仅类内部可以访问`)
}
}
总结
类主要记住三部分:种类、位置、可见性。
主体:是编写类中主要方法和属性
位置:决定类中的属性和方法的处于什么位置分为静态成员、实例成员。关键词 static 为静态成员
可见性:决定类中的属性和方法分为公有或私有,关键词 #