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
相关产品推荐
相关产品推荐

