我实际上正在寻找一个有效的解决方法,类似于解构(参见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 ];
非常感谢任何意见。
答案 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]));
这些似乎都不比三个赋值语句好。
您要做的是构建一个对象(在这种情况下,您可以assign
到this
。为此提出了各种语法,例如
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];