多くのプロパティを持つオブジェクトを作成しています。それらをインスタンス化するためのベストプラクティスについては興味があります。本当に長いコンストラクタ(新しいオブジェクトをインスタンス化するのは楽しいことではありません)を持っているのはかなり難しいようです。JavaScriptのロングコンストラクタのベストプラクティス
function Book(title, author, pages, chapters, publisher, datePublished, authorHometown, protagonistFavoriteColor) {
this.title = title;
this.authorpages = authorpages;
this.pages = pages;
this.chapters = chapters;
this.publisher = publisher;
this.datePublished = datePublished;
this.authorHometown = authorHometown;
this.protagonistFavoriteColor = protagonistFavoriteColor;
}
// not reliable to remember how to order params
var rc = new Book("Robinson Crusoe", "Daniel Defoe", 342, 16, ...);
多分私はちょうどコンストラクタで多分3重要な特性(e.g.title、著者、およびページ)を設定し、残りの個々のセッターを書く必要がある場合、私は思ったんだけど。あるいは、一貫性のために私はセッターだけを使うべきですか?この方法で設定するのが最良の方法だとすれば、JSでこれらのメソッドを呼び出す(Javaのようなインターフェイスのような)ことを強制する良い方法はありますか?
function Book (title, author, pages){
this.title = title;
this.author = author;
this.pages = pages;
this.chapters = null;
this.publisher = null;
this.datePublished = null;
this.authorHometown = null;
this.protagonistFavoriteColor = null;
}
var rc = new Book("Robinson Crusoe", "Daniel Defoe", 342);
rc.setChapters(16);
rc.setPublisher("John Smith Co.");
rc.setDatePublished("04-25-1719");
rc.setAuthorHometown("London");
rc.setProtagonistFavoriteColor("lilac");
// we'd also want to mandate that these setters be called so nothing is left null
最後に、私のコンストラクタにオブジェクトを渡すと、コンストラクタのPTも総敗北を構造化代入でしょうか?
は、あなたが持っている(または持っている必要があります)ん前に、すべての値オブジェクトのインスタンスを作成しますか? - あなたが手に入れている情報でインスタンスを取得し、その後、必要に応じてデータソースまたはユーザー入力から残りのものをフェッチする場合があることはわかっています。このような場合は、ビルダーパターンをお勧めします - このフィドルを例として見てください:https://jsfiddle.net/brandonscript/p516ojn0/ – ochi