javascript eval - 如何为对象属性赋值?

时间:2012-08-08 15:19:46

标签: javascript

  

可能重复:
  Dynamic object property name

我有一个像这样的对象

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

我想为此localAppConfig

中的特定元素设置值1

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

说,我想为钱包,paySomeone,payBills,alert,offer,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 个答案:

答案 0 :(得分:2)

你应该这样做:

var accessor = localAppConfig[name];
localAppConfig[name] = 1;

答案 1 :(得分:2)

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

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
    }
}

答案 2 :(得分: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;
} 

答案 3 :(得分:0)

尝试localAppConfig[name] = 1;

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