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

JavaScript构造函数创建对象时如何同时实现嵌套对象的赋值与获取

原代码核心问题
  • 构造函数形参重复定义了两个name,在JS函数的参数作用域中,重名参数会被后声明的同形参覆盖,导致最初传入的实例名称'book'会被最后一个传入的分类名称值覆盖,外层普通属性的赋值逻辑本身就存在隐性bug
  • 嵌套的category对象目前是硬编码的空字符串占位,没有和构造函数的传入参数建立关联,无法接收分类相关的参数值
修正实现方案
  1. 对构造函数的形参做语义化命名,消除重名冲突,明确每个入参对应的属性位置
  2. 初始化嵌套category对象时,直接将对应入参赋值给对象内部属性,无需提前设置空字符串占位
// 修正后构造函数:形参无语义冲突
function creation(name, value, categoryId, categoryName) {
  this.name = name;
  this.value = value;
  this.category = {
    id: categoryId,
    name: categoryName
  }
}

// 调用时入参顺序和原代码完全一致,无需改动调用逻辑
let creationOne = new creation('book', 350, 1, "Something extraoridnary");
console.log(creationOne);
运行后输出的实例结构
creation {
  name: 'book',
  value: 350,
  category: {
    id: 1,
    name: 'Something extraoridnary'
  }
}

后续如果入参持续增多,可改为传入配置对象的形式,通过解构赋值直接映射嵌套属性,避免形参列表过长的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 11:15:04