避免在解构论证中重复
Avoiding repetition in destructuring argument
我有一个函数 ValidateInteger
,returns 一个看起来像这样的对象:
{
Value: "123",
Neg: false,
Exp: 3
}
我还有一个 class 调用这个函数:
class MyClass {
constructor(val) {
{
Value: this.Value
Neg: this.Neg
Exp: this.Exp
} = ValidateInteger(val);
}
}
如您所见,this
有相当多的重复。
我的问题是有更好的语法可以做到这一点,例如:
this.{Value, Neg, Exp} = ValidateInteger(val);
当然应该有一些更好的语法。
我想你想要 Object.assign
。它可用于将可枚举属性的值从一些对象复制到另一个对象。
Object.assign(this, ValidateInteger(val));
var ValidateInteger = val => ({
Value: "123",
Neg: false,
Exp: 3
});
class MyClass {
constructor(val) {
Object.assign(this, ValidateInteger(val));
}
}
document.write('<pre>' + JSON.stringify(
new MyClass() // MyClass { Value: "123", Neg: false, Exp: 3 }
, null, 2) + '</pre>');
我有一个函数 ValidateInteger
,returns 一个看起来像这样的对象:
{
Value: "123",
Neg: false,
Exp: 3
}
我还有一个 class 调用这个函数:
class MyClass {
constructor(val) {
{
Value: this.Value
Neg: this.Neg
Exp: this.Exp
} = ValidateInteger(val);
}
}
如您所见,this
有相当多的重复。
我的问题是有更好的语法可以做到这一点,例如:
this.{Value, Neg, Exp} = ValidateInteger(val);
当然应该有一些更好的语法。
我想你想要 Object.assign
。它可用于将可枚举属性的值从一些对象复制到另一个对象。
Object.assign(this, ValidateInteger(val));
var ValidateInteger = val => ({
Value: "123",
Neg: false,
Exp: 3
});
class MyClass {
constructor(val) {
Object.assign(this, ValidateInteger(val));
}
}
document.write('<pre>' + JSON.stringify(
new MyClass() // MyClass { Value: "123", Neg: false, Exp: 3 }
, null, 2) + '</pre>');