避免在解构论证中重复

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>');