Skip to content

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)