class的get与set以及ts实现单例模式
js
// getter 和 setter
class Person {
// name为内部属性
constructor(private _name: string) {}
get name() {
return this._name
}
// class 中如果不写对应的set关键字,表示get对应的属性不能被修改
set name(value: string) {
this._name = value
}
}
let tom = new Person('tom')
tom.name = 'tomtom' // 注释set会报错,name is read-only
console.log(tom.name)
// 单例模式:只允许特定类存在一个实例
class Demo {
private static instance: Demo
private constructor() { } // constructor前加private可以禁止new
static getInstance() {
if(!this.instance) this.instance = new Demo() // 但是可以在内部访问
return this.instance
}
}
let d1 = Demo.getInstance()
let d2 = Demo.getInstance()
console.log(d1 === d2)