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

JavaScript中如何将对象作为函数参数并设置属性默认值

你可以用默认配置对象+参数合并的方案实现,后续新增属性只需要修改默认配置即可,完全不用调整函数逻辑,适配15个甚至更多属性都非常方便。

实现代码

// 单独维护所有属性的默认值,后续新增属性直接往这个对象里加即可
const DEFAULT_USER = {
  name: 'John',
  age: 25,
  // 示例:后续新增属性直接写在这里
  // gender: '男',
  // email: 'john@example.com',
  // phone: '13000000000'
}

const userCreator = (customConfig = {}) => {
  // 合并规则:用户传入的自定义属性会覆盖默认值,未传入的属性自动取默认值
  return {
    ...DEFAULT_USER,
    ...customConfig
  }
}

使用示例

  • 不传任何参数,直接返回全默认值的用户对象:
    const defaultUser = userCreator()
  • 仅传需要自定义的属性,剩余属性自动用默认值:
    const customUser = userCreator({name: '李四', age: 28})

进阶优化(可选)

如果需要过滤用户传入的无效属性(即默认配置中不存在的属性),可以加一层属性校验:

const userCreator = (customConfig = {}) => {
  // 仅保留默认配置中存在的有效属性
  const validConfig = Object.fromEntries(
    Object.entries(customConfig).filter(([key]) => Object.hasOwn(DEFAULT_USER, key))
  )
  return {
    ...DEFAULT_USER,
    ...validConfig
  }
}

这种方案对比你原来的写法有两个明显优势:

  • 不需要写大量的if判断做默认值赋值,代码简洁易读
  • 后续新增属性只需要在DEFAULT_USER里加一行默认值即可,维护成本极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:03