首页 > 解决方案 > 如何使用对象的括号表示法和属性名称的字符串向对象添加属性?

问题描述

我想使用括号表示法来编写对象名称,以便我可以通过参数引用它。没关系,但是当我尝试编写属性名称而不将其作为参数传递时遇到了麻烦。重要的是要简单地写出属性名称而不是作为参数传递。什么是正确的语法?

此示例显示了我尝试过的所有语法变体:

var foo = {};

bar('foo', 'cat');
function bar(object, prop) {
    
    // foo[prop] = 5; // = 5. This works, but this isn't the method I want to use. 
    
    // [object]cat = 5; // = error
    // [object].cat = 5; // = undefined
    // [object]['cat'] = 5; // = undefined
    // [object][cat] = 5; // = error
    
    console.log('= ' + foo.cat);
}

标签: javascriptobjectsyntaxparametersnotation

解决方案


由于foo被声明为全局变量,窗口​​对象将在内部包含该对象。

因此,您可以执行以下操作:

window[object]['cat'] = 5;

var foo = {};

bar('foo');
console.log('= ' + foo.cat);
function bar(object) {
    window[object]['cat'] = 5;            
}


推荐阅读