首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么输入参数有一个“对象等于另一个对象”传递给

为什么输入参数有一个“对象等于另一个对象”传递给
EN

Stack Overflow用户
提问于 2018-08-23 21:32:52
回答 1查看 21关注 0票数 0

我不明白为什么下面代码的输入参数有{ cabinet = 'spruce', distortion = '1', volume = '0' } = {}传入。这是否意味着从该类中创建的所有新对象都包含初始化的这些参数?为什么要使用{ ... } = {}呢?

代码语言:javascript
复制
class GuitarAmp {
  constructor ({ cabinet = 'spruce', distortion = '1', volume = '0' } = {}) {
    Object.assign(this, {
      cabinet, distortion, volume
    });
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 23:47:21

构造函数期望您传入一个具有属性cabinetdistortionvolume的对象。参数是以这种方式编写的,以使所有参数都是可选的,并给出所有这些参数的默认值。

它写起来的原因如下:

代码语言:javascript
复制
constructor ({ cabinet = 'spruce', distortion = '1', volume = '0' } = {})

而不是

代码语言:javascript
复制
constructor ({ cabinet = 'spruce', distortion = '1', volume = '0' })

就是允许在没有任何参数的情况下调用它。第二个示例运行良好,只要您传入一个对象,但是如果您只调用new GuitarAmp(),它将失败:

TypeError:无法对属性cabinet进行“未定义”或“null”的结构。

当没有任何东西传递给构造函数时,添加= {}使它成为一个默认的空对象来重构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51994558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档