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

如何通过字符串值为JavaScript/JSON对象添加指定属性?

如何通过字符串动态为JavaScript对象添加嵌套属性?

当然可以!而且完全不用折腾JSON.stringify和JSON.parse这种绕路的方法——JavaScript本身就提供了非常直接的动态属性操作方式,比字符串拼接优雅太多了。

先看你的需求:调用addProp方法,把指定名称的属性添加到对象上,属性值是一个包含type字段的子对象。其实只要用方括号语法就能轻松实现动态属性名的赋值。

修正后的完整实现

先把你的代码里的小语法问题(比如for循环的括号写错了)修正,然后给出正确的addProp方法:

let myObj = {};

// 给myObj添加addProp方法
myObj.addProp = function(name, type) {
  // 用方括号访问动态属性名,直接赋值为包含type的对象
  this[name] = { type: type };
};

// 调用示例
myObj.addProp("title", "string");
myObj.addProp("id", "integer");

console.log(myObj);
// 输出结果完全符合你的预期:
// { title: { type: 'string' }, id: { type: 'integer' } }

关键原理说明

  • this[name]是JavaScript的动态属性访问语法:当属性名是变量或者字符串时,不能用.语法(比如this.name只会找名为name的属性),而方括号可以直接解析括号里的字符串/变量作为属性名。
  • 这里的this指向调用方法的对象myObj,所以直接操作this就等同于操作myObj本身。

批量添加属性的场景

如果要遍历propsToAdd数组批量添加,注意用for...of(遍历数组元素)而不是for...in(遍历对象键),代码如下:

const propsToAdd = [
  { name: "title", type: "string" },
  { name: "id", type: "integer" },
  { name: "status", type: "boolean" }
];

for (const prop of propsToAdd) {
  myObj.addProp(prop.name, prop.type);
}

更通用的工具函数版本

如果你不想给每个对象都单独加addProp方法,也可以写一个通用工具函数:

function addNestedProp(obj, propName, propType) {
  obj[propName] = { type: propType };
}

// 使用方式
addNestedProp(myObj, "title", "string");

这种方法既简洁又高效,完全避免了字符串拼接可能带来的语法错误,也比JSON转换的性能好得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:33:32