ES6类构造函数参数

时间:2016-05-05 18:54:06

标签: javascript ecmascript-6

我正在查看ES6类定义,并且不了解构造函数的参数。这是班级:

export class Modal {
    constructor($modal, {size = null,} = {}) {
        // stuff
    }
}

我对此{size = null,} = {}感到困惑。这是一个单一的论点吗?这是什么意思?

1 个答案:

答案 0 :(得分:12)

它是object destructuring,具有给定的默认值。

如果你传递像

这样的obj
{ size: true }

您可以访问"尺寸"在构造函数内部,如正常变量

export class Modal {
  constructor($modal, {size = null } = {}) {
    console.log(size); // prints the size value from the given object
  }
}

如果您没有传递任何内容,或者传递的对象没有" size",则大小将为null。你可以做更多这样的任务。用逗号分隔它们。

示例:

constructor($modal, { size = null, foo, bar = "test" } = {})

在这种情况下,如果你传递一个没有属性的对象" foo"它将是未定义的,其余的行为就像我上面提到的那样。

还值得一提的是,您必须在= {}声明中的解构分配结束时添加constructor。在你没有通过任何东西的情况下。否则你必须传递一些对象(可能是空的)。