You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在constructor函数中提取object属性值且无需编写多行代码

实现方案

你要的极简提取对象属性的需求用ES6的对象解构语法就能实现,你原本的写法思路正确,仅需补全变量声明就能正常运行,全程只需1行代码,无需编写4行逐行赋值的代码:

constructor(product) {
    // 单次解构完成4个属性的提取
    const { title, imgUrl, price, desc } = product
}

如果你是需要把提取到的属性直接挂载到类实例this上,还可以进一步省略单独的变量声明,避免逐行写this.xxx = xxx的冗余代码:

// 方案1:搭配IIFE实现属性筛选挂载
constructor(product) {
    Object.assign(this, (({ title, imgUrl, price, desc }) => ({ title, imgUrl, price, desc }))(product))
}

// 方案2:提前封装通用属性提取工具函数,复用性更高
// 工具函数全局仅需定义一次
const pick = (targetObj, keyList) => Object.fromEntries(keyList.map(key => [key, targetObj[key]]))

// 构造函数内仅需一行调用
constructor(product) {
    Object.assign(this, pick(product, ['title', 'imgUrl', 'price', 'desc']))
}

方案选型参考

  • 仅需要提取属性为独立变量:选基础解构方案,可读性最高,是业务开发中最常用的写法
  • 需要把提取的属性批量挂载到其他对象上:选Object.assign搭配工具函数的方案,冗余代码最少

内容的提问来源于stack exchange,提问作者user15392855

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:06:03