All*_*toc 5 javascript ecmascript-6
我实际上正在寻找一个有效的答案,类似于解构(参见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)
但我见过这个样本:
[a, b] = [1, 2];
Run Code Online (Sandbox Code Playgroud)
所以我希望是否有办法为多个对象属性进行批量分配,如下所示:
this.[name, age, is_male] = [ 'John Doe', 22, true ];
Run Code Online (Sandbox Code Playgroud)
为了缩短这个:
this.name = 'John Doe';
this.age = 22;
this.is_male = true;
Run Code Online (Sandbox Code Playgroud)
任何输入将不胜感激。
小智 5
一种不太完美的选择是:
const [name, age, is_male] = ['John Doe', 22, true];
Object.assign(this, {name, age, is_male});
Run Code Online (Sandbox Code Playgroud)
或者
Object.assign(this,
([name, age, is_male]) => ({name, age, is_male}))(['John, Doe', 22, true]));
Run Code Online (Sandbox Code Playgroud)
这些似乎都不比三个赋值语句更好。
您要做的是将对象解构为一个对象(在这种情况下,您可以这样assign做this。为此提出了各种语法,例如
Object.assign(this,
{ [name, age, is_male] = ['John Doe', 22, true] });
Run Code Online (Sandbox Code Playgroud)
和
Object.assign(this,
['John Doe', 22, true].{name, age, is_male});
Run Code Online (Sandbox Code Playgroud)
但他们在语言标准过程中并没有得到太多关注。
你不能做
this.[...
Run Code Online (Sandbox Code Playgroud)
因为这会给你一个
未捕获的语法错误:意外的标记 [
但您可以使用[]s 来分配this.-值:
[this.name, this.age, this.is_male] = ['John Doe', 22, true];
Run Code Online (Sandbox Code Playgroud)