MongoDBデータベースの出力を使ってクラスのインスタンスを構築しようとしています。私の問題は、クラスに入れ子クラスがあり、インスタンス化したいということにあります。 Object.assign()を使用するとトップレベルのオブジェクトしか作成できないようですが、内部のプロパティは「オブジェクト」なので、メソッドにアクセスすることはできません。内部オブジェクトを使ってオブジェクトを構築する方法
...に比べlet obj = {address: { street: '1234 Rainbow Road' }};
class Person {
constructor(obj) {
Object.assign(this, obj);
}
}
class Address {
constructor(addr) {
this.address = addr;
}
printAddress() {
console.log(this.address);
}
}
let p = new Person(obj);
p.address.printAddress() // fails, no function printAddress
class Person {
constructor(obj) {
this.address = new Address(obj.address);
}
}
class Address {
constructor(addr) {
this.address = addr;
}
printAddress() {
console.log(this.address);
}
}
let p = new Person(obj);
p.address.printAddress() // works
例えばこれは一例であり、私のクラスはかなり大きいだけでなく、すべての内部クラスをインスタンス化速記する方法はありますか?または、2番目のコードスニペットのように分解する必要がありますか?ありがとう!
関連:[ジャバスクリプト内のインスタンス(「クラス」)に機能するために、プレーンオブジェクトをキャスト](http://stackoverflow.com/q/11810028/1048572) – Bergi
私はあなた 'Address'クラスが'持っている必要がありますね「住所」フィールドではない? – Bergi