1

したがって、次のようにクラスを書くと

class Rectangle {
   #width;
   #height;
   constructor() {
      this.#width = 3;
      this.#height = 5; 
   }

}

let rect = new Rectangle();

console.log(JSON.stringify(rect)); // returns {}

すべてのプライベート メンバーを完全に無視して、空のオブジェクトを返します。toJSON メソッドの追加は機能しますが、非常に面倒です。プライベート フィールドを簡単に JSON.stringify に表示する組み込みの方法はありますか? それとも、すべてのメンバーを toJSON メソッドに書き込む必要がありますか?

4

2 に答える 2

0

プライベート プロパティは、クラス宣言自体の内部でのみアクセスできます。独自のシリアル化メソッドを記述する必要があります。

class Rectangle {
  #width;
  #height;
  constructor() {
    this.#width = 3;
    this.#height = 5;
  }

  stringify() {
    return JSON.stringify({['#width']: this.#width,['#height']: this.#height})
  }

}

let rect = new Rectangle();

console.log(rect.stringify())

于 2021-11-05T02:30:00.397 に答える