能否将字符串传入JavaScript函数并作为对象属性使用?
当然可以实现!
你的需求完全没问题,只是当前代码里的this.{name}属于JavaScript语法错误,我们只需要调整成方括号表示法,就能轻松实现动态设置对象属性的功能。
修正后的完整代码示例:
function object() { this.somevalue = 1; this.somevalue2 = 1; this.updateAttribute = function(name, value) { // 用方括号包裹变量name,实现动态属性赋值 this[name] = value; } }
为什么这样能行?
JavaScript里访问对象属性有两种方式:
- 点表示法:
obj.propertyName,这种方式只能用固定的、提前写死的属性名 - 方括号表示法:
obj[propertyNameVariable],这种方式支持用变量或表达式来动态指定属性名,刚好匹配你要传入字符串作为属性名的需求
实际调用示例:
const myObj = new object(); // 更新已有属性 myObj.updateAttribute('somevalue', 10); console.log(myObj.somevalue); // 输出:10 // 新增属性也完全支持 myObj.updateAttribute('customProp', '我是动态新增的属性'); console.log(myObj.customProp); // 输出:我是动态新增的属性
这样不管你传入什么字符串作为属性名,都能正确给对象设置对应的属性啦!
内容的提问来源于stack exchange,提问作者Islam ElHakmi
相关产品推荐
相关产品推荐

