ES6默认参数为空对象?

时间:2016-08-15 01:35:47

标签: javascript constructor ecmascript-6 default-value

我试图为options参数定义一个具有以下行为的构造函数:



class Test {
  constructor({
    someOption = 'foo',
    otherOption = 'bar',
    aSeedOfSomeSort = Math.random(),
    // ...
  }) {
    console.log(
      someOption, otherOption, aSeedOfSomeSort
    );
  }
}

new Test({someOption: 'lol'});
new Test({otherOption: 'derp'});
new Test({aSeedOfSomeSort: 0.5});
new Test({});
new Test(); // here's the problem




这很好,但是,我希望构造函数能够工作,以便使用所有默认参数,我不必传递空对象。我不关心对象本身是否在参数中被命名,但是在构造函数的上下文中,我想要一种干净的方法来直接访问没有命名空间或使用with的所有选项。 / p>

这可能吗?

1 个答案:

答案 0 :(得分:2)

在构造函数中,使用:

constructor({
  someOption = 'foo',
  otherOption = 'bar',
  aSeedOfSomeSort = Math.random(),
  // ...
} = {})

通过在末尾添加= {},如果未定义,它将成为输入参数的默认值。

Example