一、TypeScript-类-静态属性
1. setter/getter
-
通过set/get,完成对私有属性的开放和封装。
class Person4GetOrSet { // 一般用下划线_表示私有属性 constructor(private _name: string) {} // 定义对外开放属性 get name() { return this._name; } // 赋值定义,这边也可以做一些赋值过滤处理 set name(name: string) { this._name = name; } } const person = new Person4GetOrSet("张三"); console.log(person.name); person.name = "李四"; console.log(person.name);
2. 单例模式
-
只会有一个实例
-
懒汉式
class Person4Singleton { // private 私有化构造方法,防止在类的外部被new private constructor() {} // 定义实例属性,且私有化,使用private修饰 // 一般用下划线_表示私有属性 private static _instance: Person4Singleton; // 使用get方法暴露该类的实例 static getInstance(): Person4Singleton { // 懒汉式一般写法 // if (!this._instance) { // this._instance = new Person4Singleton(); // } // return this._instance; // 懒汉式简写 this._instance = this._instance || new Person4Singleton(); return this._instance; } } // 获取两个实例 const instance1 = Person4Singleton.getInstance(); const instance2 = Person4Singleton.getInstance(); // 使用===判断 值和地址是否相等,如果相等则表示是同一个对象 console.log(instance1 === instance2);
-
饿汉式
class Person4Singleton { // private 私有化构造方法,防止在类的外部被new private constructor() {} // 定义实例属性,且私有化,使用private修饰 // 一般用下划线_表示私有属性 // 直接构造实例 private static _instance: Person4Singleton = new Person4Singleton(); // 使用get方法暴露该类的实例 static getInstance(): Person4Singleton { return this._instance; } } // 获取两个实例 const instance1 = Person4Singleton.getInstance(); const instance2 = Person4Singleton.getInstance(); // 使用===判断 值和地址是否相等,如果相等则表示是同一个对象 console.log(instance1 === instance2);
-