【发布时间】:2016-11-02 19:17:09
【问题描述】:
是否可以在 JavaScript 类的构造函数中使用解构赋值来将实例变量赋值给普通变量?
以下示例有效:
var options = {one: 1, two: 2};
var {one, two} = options;
console.log(one) //=> 1
console.log(two) //=> 2
但我无法使以下内容正常工作:
class Foo {
constructor(options) {
{this.one, this.two} = options;
// This doesn't parse correctly and wrapping in parentheses doesn't help
}
}
var foo = new Foo({one: 1, two: 2});
console.log(foo.one) //=> I want this to output 1
console.log(foo.two) //=> I want this to output 2
【问题讨论】:
-
我认为更普遍的问题是,是否有一种解构赋值形式提供在现有对象上创建属性而不是对象初始值设定项。
-
反正总有
Object.assign(this, options); -
值得一提的是,您也可以在构造函数之外应用相同的语法。给出了两个对象:
let o = {a: 1, b: 2}, p = {};。将o解构为不那么复杂的p是小菜一碟:({b: p.b} = o);为p生成Object {b: 2}。 -
这能回答你的问题吗? object destructuring without var
标签: javascript variable-assignment destructuring