我正在尝试使用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
这只是一个例子,我的类相当大,有没有办法简化实例化所有内部类?或者我是否必须像在第二个代码片段中那样对其进行分解?谢谢!
答案 0 :(得分:1)
您可以在new Address
new Person
let p = new Person(new Address({street: '1234 Rainbow Road'}));
答案 1 :(得分:0)
第二个版本足以作为单个属性的设计选择。
对于成熟的DI容器来说,它看起来并不像,但如果属性的数量足够大,某种类映射可能有助于消除样板代码。
y = x[1];