问题 ES6类构造函数参数


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

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

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


6407
2018-05-05 18:54


起源

可能重复 我在哪里可以获得有关javascript函数的对象参数语法的信息? 和 什么(state = {})=> state意味着什么 - Bergi


答案:


这是一个 对象解构 具有给定的默认值。

如果你传递一个obj就好

{ size: true }

你可以像普通变量一样访问构造函数中的“大小”

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

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

例:

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

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

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


10
2018-05-05 18:57



嗯,在这种情况下,它不是真正的任务...... - Bergi
@bergi它应该是一个对象解构,对吧?更正 - Jakub Rożek