为什么要在javascript类中设置这样的默认参数?

时间:2018-04-11 03:26:38

标签: javascript ecmascript-6

在查看有关javascript类的文章时,作者使用以下语法:

class GuitarAmp {
    constructor ({ cabinet = 'spruce', distortion = '1', volume = '0' } = {}) {
     Object.assign(this, {
      cabinet, distortion, volume
     });
   }
}

构造函数参数列表中= {}位的用途是什么?我们不是要为cabinetdistortionvolume设置默认参数吗?

1 个答案:

答案 0 :(得分:4)

它允许您在没有任何参数的情况下调用GuitarAmp,并将提供默认参数{} - 其析构属性将正确地进行默认分配。否则,如果在没有任何参数的情况下调用该函数,则会导致错误:

class GuitarAmp1 {
    constructor ({ cabinet = 'spruce', distortion = '1', volume = '0' } = {}) {
      console.log(cabinet);
   }
}
class GuitarAmp2 {
    constructor ({ cabinet = 'spruce', distortion = '1', volume = '0' }) {
      console.log(cabinet);
   }
}
new GuitarAmp1();
new GuitarAmp2();

这个default-parameter-deconstruction模式可以用于任何函数,无论它是否是构造函数。