0

可能重复:
动态对象属性名称

我有一个像这样的对象

var localAppConfig = {
    wallet:0,
    paySomeone:0,
    payBills:0,
    accounts:0,
    moveMoney:0,
    alerts:0,
    offers:0,
    checkIn:0
};

我想为此中的特定元素设置值 1localAppConfig

需要设置的元素是json从服务器到达的 - 中检索的。

比如说,我想为 wallet、paySomeone、payBills、alerts、offers、checkIn 设置 value = 1

这些都是从json类似的

for(var i=0;i<len;i++){
        var name = list[i].handle;
        var accessor = eval('localAppConfig.'+name);
        eval('localAppConfig.'+name)=1;
    }

var name包含元素的名称,我能够正确访问它的值,

如何使用 javascript 设置值?

我试过accessor=1但它不起作用。

谢谢 :)

4

4 回答 4

3

你应该这样做:

var accessor = localAppConfig[name];
localAppConfig[name] = 1;
于 2012-08-08T15:21:41.003 回答
3

无论如何:试试这个尺寸:

localAppConfig[name] = 1;//where name is a variable of choice, it's value will be used as the propertyname

然后再次:

- 当你只有评估锤时,一切看起来都像你的拇指。——Brendan Eich 回应:我们应该鼓励使用 eval() 而不是 Function 构造函数来动态创建函数。

但是为什么要使用属性列表呢?您不妨使用for...in循环:对于像您这样的对象,完全可以。
只要您检查.hasOwnProperty,也:

for (var prop in localAppConfig)
{
    if (localAppConfig.hasOwnProperty(name))
    {
        //set, delete... do whatever
    }
}
于 2012-08-08T15:23:26.203 回答
1

尝试localAppConfig[name] = 1;

它只是一个 javascript 对象,无需eval()在其上使用。

于 2012-08-08T15:23:10.283 回答
0

不要使用eval(). 您可以通过在对象中引用该值的索引来添加属性。如果它不存在,那么它将被创建,否则该值将被覆盖。

请尝试以下操作:

// localAppConfig[list[i].handle] = 1; 

for(var i=0;i<len;i++){         
    localAppConfig[list[i].handle] = 1;
} 

或者,如果您打算在另一个地方引用该变量,则设置一个值为 的变量list[i].handle

for(var i=0;i<len;i++){
    var name = list[i].handle;        
    var accessor = localAppConfig[name];    
    localAppConfig[name] = 1;
} 
于 2012-08-08T15:21:54.003 回答