1. class P {
    2. constructor(private _name: string) {} // 私有属性一般用 _ 作为前缀
    3. get name() {
    4. return this._name + '可以做一些操作';
    5. }
    6. set name(name: string) { // 可以做一些保护
    7. if (name.length > 10) {
    8. return;
    9. }
    10. this._name = name;
    11. }
    12. }
    13. const p = new P('zwx');
    14. p.name; // zwx可以做一些操作
    15. p.name = '1234567890000';
    16. p.name; // zwx可以做一些操作
    17. p.name = '1234';
    18. p.name; // 1234可以做一些操作
    /*
     *    单例模式
     *  只能生成一个实例
    */
    
    class Demo {
      private static instance: Demo;
      private constructor(private _name: string) {
        this._name = _name;
      } // 规避了 new 创建实例
    
      get name() {
        return this._name;
      }
    
      static getInstance(name: string) {
        return this.instance ? this.instance : new Demo(name);
      } // 把方法挂在类上,不是实例上
    }
    
    const demo = Demo.getInstance('zwx');
    const demo2 = Demo.getInstance('pw');
    
    demo.name // zwx
    demo2.name // zwx