如何为已有JavaScript对象的state键添加子对象?求助
解决无法为对象字符串属性添加子属性的问题
嘿,我来帮你搞定这个问题!你现在遇到的核心问题是:初始的myObject.state是一个字符串类型的值,而字符串属于JavaScript的原始类型,不是引用类型的对象,所以你没法直接给它添加county这样的子属性——这就是myObject.state.county = "Frederick"完全没效果的原因。
先纠正一下你写的理想对象结构,它有语法错误,正确的目标结构应该是把state定义成一个包含州名和郡名的对象,比如这样:
var myObject = { name: "John Doe", state: { name: "Washington DC", county: "Frederick" } };
如果已经创建了初始的myObject,想要修改成上面的结构,你可以按以下步骤操作:
- 把原来的
state字符串转换为对象,同时保留原有的州名 - 给这个新对象添加
county属性
具体代码如下:
// 初始对象 var myObject = { name: "John Doe", state: "Washington DC" }; // 将state从字符串转为对象,保留原有州名并添加county属性 myObject.state = { name: myObject.state, county: "Frederick" }; // 现在查看对象结构,就是你想要的样子了 console.log(myObject);
为什么原来的操作无效?简单说:当你尝试访问原始类型(比如字符串)的属性时,JavaScript会临时把它包装成对应的对象(比如String对象),但这个临时对象在操作结束后会立即被销毁,所以你给它赋值的county属性根本不会被保留下来,原字符串也不会有任何变化。举个直观的例子:
let str = "Hello"; str.test = "World"; console.log(str.test); // 输出undefined,因为临时包装对象已经被销毁了
总结一下关键点:只有引用类型(对象、数组等)才能添加子属性,原始类型不行。所以想要实现你的需求,必须先把state从字符串转换成对象,再添加子属性。
内容的提问来源于stack exchange,提问作者bhamlefty24
相关产品推荐
相关产品推荐

