Die Kapselung von Attributen in Typoskript dient hauptsächlich der Sicherheit

Warum Attribute eingekapselt werden, dient beispielsweise der Sicherheit

class SX {
    
    
  name: string;
  age: number;
  constructor(name: string, age: number) {
    
    
    this.name = name;
    this.age = age;
  }
}

const sx = new SX('哈哈',12);
sx.name = '刘' 

Das Namensattribut kann extern beliebig geändert werden, was zu einer geringen Sicherheit führt

Führen Sie ein Attribut ein

private 私有属性,只能在类内部进行访问修改,通过在类中添加方法使得私有属性可以被外部访问,之前我们不写,默认就是public

Dann schreiben wir

class SX {
    
    
  private _name: string;
  private _age: number;
  constructor(name: string, age: number) {
    
    
    this._name = name;
    this._age = age;
  }

  //定义方法,获取属性
  getName(){
    
    
    return this._name;
  }
  //定义方法,设置name属性
  setName(value:string){
    
    
    this._name = value
  }
}

const sx = new SX('哈哈',12);
sx.setName('猪八戒')

Jetzt liegt die Änderungsmethode in meinen Händen. Wenn ich die Änderungsmethode nicht festlege, wird diese Eigenschaft niemals geändert.

Die obige Methode wird von mir selbst implementiert, TS bietet eine bequemere Methode

class SX {
    
    
  private _name: string;
  private _age: number;
  constructor(name: string, age: number) {
    
    
    this._name = name;
    this._age = age;
  }
  
  //获取属性方法,get
  get name(){
    
    
    return this._name;
  }
  //设置属性方法,set
  set name(value:string){
    
    
    this._name = value;
  }
}
const sx = new SX('哈哈',12);

sx.name; //获取
sx.name = '猪八戒'

Neben öffentlichen und privaten Attributen verfügt ts auch über ein geschütztes Attribut

protected 受保护的属性,只能在当前类和当前类的子类里面调用

Wie benutzt man es?

class protect{
    
    
  protected name : string;
  constructor(name : string){
    
    
    this.name = name;
  }
}
class protectchildren extends protect{
    
    
  getter(){
    
    
    console.log(this.name) //可以取到
  }
}

const aaa = new protectchildren('sss');
// aaa.name 取不到

Abschließend werde ich eine einfache Möglichkeit vorstellen, eine Klasse zu schreiben

So geschrieben schon mal

class bbbb{
    
    
  public name : string;
  constructor(name : string){
    
    
    this.name = name;
  }
}

Schreiben Sie einfach so, der Effekt ist der gleiche

class bbbb{
    
    
  constructor(public name:string){
    
    }
}

Um es noch einmal zu sagen: Kapselung bedeutet, das Attribut sicherer zu machen und es durch get und set zu ändern

Ich denke du magst

Origin blog.csdn.net/weixin_45389051/article/details/115285273
Empfohlen
Rangfolge