我知道我们可以做类似的事情:
const a = { b: 1, c: 2 }
const A = { ...a };
// A { b: 1, c: 2 }
但是我们如何使用这种方法将数据传递到this
值中?
例如,我们有一个class A {}
,并且想将对象属性动态设置为this
。通常的方法是将Object.defineProperties
与for...in
循环一起使用:
const a = { b: 1, c: 2 }
class A {
constructor(obj){
for (const k in obj)
Object.defineProperty(this, k, { value: obj[k] });
}
}
new A(a);
// A { b: 1, c: 2 }
所以我在想,既然我们现在有了语法糖,那么如何在上面的示例中使用它呢?
编辑
我在这里谈论的是传播 operator 语法...
。
答案 0 :(得分:4)
您无法通过传播然后分配结果来更新this
。
您可以使用Object.assign()
将属性从obj
复制到this
:
class A {
constructor(obj) {
Object.assign(this, obj);
}
}
const a = { b: 1, c: 2 }
console.log(new A(a));
您可以使用解构将已知属性分配给this
:
class A {
constructor(obj) {
({ b: this.b, c: this.c } = obj);
}
}
const a = { b: 1, c: 2 }
console.log(new A(a));