我最近见过这段代码:
class Foo {
constructor({
a,
b,
c = []
}) {
this.a = a;
this.b = b;
this.c = c;
console.log(this);
}
}
const foo = new Foo({
a: 1,
b: 2
});

但我从未见过用花括号包装参数名称定义的参数。我的linter抱怨它,但代码工作正常,所以我认为它是有效的,因为它执行没有错误。
我已阅读有关的MDN文档,class,constructor和default arguments。但是,我没有看到这种模式在任何地方描述(也许我错过了它?)。
我在寻找什么,这种模式有名称,还是在某处描述?
答案 0 :(得分:3)
但是,在这种情况下,您可以简单地执行
class Foo {
constructor(opts) {
Object.assign(this, {c: []}, opts);
console.log(this);
}
}
const foo = new Foo({
a: 1,
b: 2
});
你应该找到一些“es6”标志,让你的短片让它快乐。
答案 1 :(得分:1)
但我以前从未见过如此定义的论点。
这是解构,只是在争论中使用。
我找不到一个好的参考,但我相信这是一个ES6功能。它的作用是将对象参数分解为单个变量,并将具有相同名称的属性值分配给变量。
这类似于:
class Foo {
constructor(obj) {
this.a = obj.a;
this.b = obj.b;
this.c = obj.c || [];
console.log(this);
}
}