我有一个Wallet
类,wallet
是此类的一个实例。
我必须JSON.stringify(wallet)
将其保存在文件中。现在,当我执行JSON.parse(JSON.stringify(wallet))
时,它不再是Wallet
的实例。
如何将此普通对象从JSON.parse
转换为intanceof
Wallet
?
答案 0 :(得分:1)
您可以使用Object.assign(target, source)将纯对象的属性分配给您的实例。
请务必仔细阅读MDN文档链接中提到的所有陷阱,尤其是在您嵌套了对象的情况下。
let plain = {
foo : 'bar',
count : 42
}
class Complex {
constructor() {
this.foo = 'hello';
this.count = 10;
}
getCount() {
return this.count;
}
getFoo() {
return this.foo;
}
}
let test = new Complex();
console.log(test.getFoo());
console.log(test.getCount());
console.log('==== assigning plain object ===');
Object.assign(test, plain);
console.log(test.getFoo());
console.log(test.getCount());
答案 1 :(得分:1)
只需使用Object.assign()
,就像这样:
const walletLiteral = JSON.parse(response);
const walletInstance = Object.assign(new Wallet(), walletLiteral);