class User {
// 实例属性,用于存储用户名
username: string;
// 构造函数,初始化实例属性
constructor(username: string) {
this.username = username;
}
// 实例方法,打印问候语
greet() {
console.log(`Hello, ${this.username}`);
}
}
// 创建类的实例
const user = new User('John');
// 调用实例方法
user.greet();
实例属性和实例方法在内存分配和使用场景上的区别:
- 内存分配:
- 实例属性:每个实例都有自己独立的一份实例属性的拷贝。例如当创建多个
User
实例时,每个实例的username
属性在内存中占据不同的空间。
- 实例方法:实例方法在内存中只有一份拷贝,所有实例共享该方法。不同实例调用该方法时,只是传递不同的
this
上下文(这里this
指向调用该方法的实例),但方法代码本身是共享的。
- 使用场景:
- 实例属性:用于存储每个实例特有的数据。比如每个用户的不同用户名,用户的个性化设置等。
- 实例方法:用于定义对实例属性进行操作或基于实例状态执行特定行为的逻辑。比如根据不同用户名打印个性化问候语,或者基于用户当前状态执行某些业务逻辑操作。