批量分配给多个Javascript对象

时间:2016-10-12 19:32:27

标签: javascript ecmascript-6

我实际上正在寻找一个有效的解决方法,类似于解构(参见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

但我看过这个样本:

register

所以我希望是否有办法为多个对象属性进行批量分配,如下所示:

[a, b] = [1, 2];

缩短这一点:

this.[name, age, is_male] = [ 'John Doe', 22, true ];

非常感谢任何意见。

3 个答案:

答案 0 :(得分:4)

一个不太完美的选择是:

const [name, age, is_male] = ['John Doe', 22, true];
Object.assign(this, {name, age, is_male});

Object.assign(this, 
  ([name, age, is_male]) => ({name, age, is_male}))(['John, Doe', 22, true]));

这些似乎都不比三个赋值语句好。

您要做的是构建一个对象(在这种情况下,您可以assignthis。为此提出了各种语法,例如

Object.assign(this,
  { [name, age, is_male] = ['John Doe', 22, true] });

Object.assign(this,
  ['John Doe', 22, true].{name, age, is_male});

但他们在语言标准流程中没有太大的吸引力。

答案 1 :(得分:2)

Object.assign会这样做。

var obj = {
  foo: 1,
  copy: function() {
    Object.assign(this, {
      name: "John Doe",
      age: 22,
      is_male: true
    });
  }
}

obj.copy();
console.log(obj);

答案 2 :(得分:0)

你做不到

this.[...

因为这会给你一个

  

未捕获的SyntaxError:意外的令牌[

但您可以使用[]来指定this. - 值:

[this.name, this.age, this.is_male] = ['John Doe', 22, true];