0

表示、作成、更新などに一連のプロパティを受け取るクラスである View があるアプリを構築しています。

私はこのようにビューを設定します

export default class {
   constructor(view) {
      this.id = view.id;
      this.title = view.title;
   }
}

View新しいビューが作成されているときに aを初期化できるようにしたいのですが、正しい方法は次のように考えています

let newView = new View()

残念ながら、これを行うと、コンストラクター関数が呼び出されないようです。このテストを実行すると

expect(newView.id).toBe(undefined)

エラーが発生しますcannot read property id of undefined

let newView = new View({})

正しく返されますが、空のオブジェクトを提供するのは少し奇妙です。これは正しいです?空のクラスをインスタンス化するより良い方法はありますか?

4

2 に答える 2

1

デフォルトのパラメータを使用viewして、 object をデフォルトの変数識別子として設定しview、 properties を次idのように設定できます。titleundefined

class View {
   constructor(view = {id: void 0, title: void 0}) {
      this.id = view.id; 
      this.title = view.title;
   }
}

var newView = new View();

console.assert(newView.id === undefined
              , {"message":"newView.id is not undefined"
              , "newView.id":newView.id}
);

console.assert(newView.id !== undefined
              , {"message":"newView.id is undefined"
              , "newView.id":newView.id}
);

console.dir(newView);

于 2016-10-10T06:17:29.840 に答える