javascript - 有没有一种优雅的方法可以将参数对象传递给函数?

标签 javascript javascript-objects

我有以下方法,它获取一组数据并从中创建模型的新实例。 reportTemplateData 作为一个对象出现,我对其进行解构,以便将其作为属性列表传递给类构造函数。

虽然这很有效,但我觉得它可以更有效地完成。是否有更优雅的方式在一行左右执行此操作?

addReportTemplate(reportTemplateData) {
  const {
    id,
    pageId,
    profileTemplateId,
    userId,
    name,
    description,
    createdAt,
    updatedAt,
    deletedAt,
    createdBy,
    updatedBy,
    deletedBy,
    reportTemplateColumns,
  } = reportTemplateData;
  const newReportTemplate = new ReportTemplate(
    id,
    pageId,
    profileTemplateId,
    userId,
    name,
    description,
    createdAt,
    updatedAt,
    deletedAt,
    createdBy,
    updatedBy,
    deletedBy,
    reportTemplateColumns,
  );
  this.reportTemplates.push(reportTemplates);
}

编辑

值得注意的是,如果您选择 const newReportTemplate = new ReportTemplate({...reportTemplateData}) 解决方案,则必须将数据属性与类构造函数参数精确匹配。这对我来说是一个问题,因为数据以 snake_case 形式进入,而我的 Javascript 模型正在寻找驼峰式。

最佳答案

假设只有您要传递的属性在该对象中。

addReportTemplate(reportTemplateData) {
  const newReportTemplate = new ReportTemplate({ ...reportTemplateData });
  this.reportTemplates.push(reportTemplates);
}

如果您想排除一些属性,请解构它们。

addReportTemplate(reportTemplateData) {
  const { 
      excluded1,
      excluded2,
      ...properties,
   } = reportTemplateData;
  const newReportTemplate = new ReportTemplate({ ...properties });
  this.reportTemplates.push(reportTemplates);
}

这两种方法都需要更改 ReportTemplate 类,其中构造函数将对象作为参数。 在 this pen 中查看此方法如何工作的两个示例.

关于javascript - 有没有一种优雅的方法可以将参数对象传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855668/

相关文章:

javascript - Ext JS 4.2.1 + Sencha CMD - ItemSelector 按钮 CSS 未加载

javascript - 为什么 PHP 在浮点运算方面比 Javascript 更好?

javascript - 访问对象数组中的项目

javascript - 如何使用函数向 JavaScript 对象添加属性名称和值?

javascript - XHR 仅请求 header

javascript - 带有导航守卫的 vue 路由器 - next() 不起作用

javascript - 播放一次音频文件

javascript - 通过对象数组进行映射并动态访问其属性(使用变量)

javascript - 重写此 JavaScript 类方法的正确方法

javascript - 如何使用 JavaScript 每秒向右移动 10 个像素并向下移动 10 个像素