static
关键字- 含义
- 在 TypeScript(TS)的类中,
static
关键字用于定义静态成员。静态成员属于类本身,而不是类的实例。
- 在 TypeScript(TS)的类中,
- 特点
- 访问方式:静态成员可以通过类名直接访问,不需要创建类的实例。例如,如果有一个类
MyClass
,其中有一个静态方法staticMethod()
,可以这样调用:MyClass.staticMethod()
。 - 内存分配:静态成员在内存中只有一份,被类的所有实例共享。例如,如果在静态属性中存储一个计数器,无论创建多少个类的实例,这个计数器只有一个,所有实例对它的操作都是对同一个内存位置进行的。
- 使用场景:常用于工具方法或共享数据。比如,数学工具类中的数学计算方法(如计算圆的面积的方法),或者用于记录类的实例数量的计数器等场景。
- 访问方式:静态成员可以通过类名直接访问,不需要创建类的实例。例如,如果有一个类
- 示例代码
- 含义
typescript
class MyClass {
static staticProperty = "I am static";
static staticMethod() {
return "This is a static method";
}
}
console.log(MyClass.staticProperty);
console.log(MyClass.staticMethod());
this
关键字- 含义
- 在类中,
this
关键字指代当前类的实例。它提供了对实例属性和方法的访问。
- 在类中,
- 特点
- 访问方式:
this
必须在类的实例方法中使用,用于访问当前实例的属性和方法。例如,如果有一个实例方法instanceMethod()
,在这个方法中可以使用this
来访问实例的其他属性和方法,如this.instanceProperty
。 - 内存分配:每个类的实例都有自己独立的
this
所指向的内存空间,包含各自的实例属性。例如,不同的MyClass
实例可以有不同的instanceProperty
值。 - 使用场景:用于操作实例相关的数据和行为。比如,在对象的初始化方法(构造函数)中初始化实例属性,或者在实例方法中调用其他实例方法等场景。
- 访问方式:
- 示例代码
- 含义
typescript
class MyClass {
instanceProperty = "I am an instance property";
instanceMethod() {
return `This is an instance method, and instanceProperty is ${this.instanceProperty}`;
}
}
const myInstance = new MyClass();
console.log(myInstance.instanceMethod());
总结
static
用于定义类级别的属性和方法,它们属于类本身,不依赖于实例。this
用于指代类的实例,用于访问和操作实例级别的属性和方法。