javascript评估-如何为对象属性赋值?
可能重复:javascript评估-如何为对象属性赋值?,javascript,Javascript,可能重复: 我有一个这样的物体 var localAppConfig = { wallet:0, paySomeone:0, payBills:0, accounts:0, moveMoney:0, alerts:0, offers:0, checkIn:0 }; 我想为这个localAppConfig 需要设置的元素是从服务器提供的json中检索的 比如说,我想为钱包、付费对象、账单、提醒、优惠、签到设置值=1 这些都是从js
我有一个这样的物体
var localAppConfig = {
wallet:0,
paySomeone:0,
payBills:0,
accounts:0,
moveMoney:0,
alerts:0,
offers:0,
checkIn:0
};
我想为这个localAppConfig
需要设置的元素是从服务器提供的json
中检索的
比如说,我想为钱包、付费对象、账单、提醒、优惠、签到设置值=1
这些都是从json的like
for(var i=0;i<len;i++){
var name = list[i].handle;
var accessor = eval('localAppConfig.'+name);
eval('localAppConfig.'+name)=1;
}
对于(var i=0;i您应该这样做:
var accessor = localAppConfig[name];
localAppConfig[name] = 1;
不要使用eval()
。可以通过引用对象中该值的索引来添加属性。如果该属性不存在,则将创建该属性,否则将覆盖该值
请尝试以下操作:
// localAppConfig[list[i].handle] = 1;
for(var i=0;i<len;i++){
localAppConfig[list[i].handle] = 1;
}
请尝试localAppConfig[name]=1;
它只是一个javascript对象,无需在其上使用eval()
。无论如何:请尝试使用以下大小:
localAppConfig[name] = 1;//where name is a variable of choice, it's value will be used as the propertyname
再说一遍:
-当你只有评估锤时,一切看起来都像你的拇指。
–Brendan Eich回应:我们应该鼓励使用eval()而不是函数构造函数来动态创建函数
但为什么要使用属性列表呢?您也可以在
循环中为…使用:对于像您这样的对象,这完全没关系。
只要您选中。hasOwnProperty
:
for (var prop in localAppConfig)
{
if (localAppConfig.hasOwnProperty(name))
{
//set, delete... do whatever
}
}
邪恶在世界上游荡:“当你只有一把评估锤时,一切看起来都像你的大拇指”noooooooooooooooooo!仇恨eval()
伙计们,别恨我:p@AdityaParab:我不恨任何人,也不恨eval
,我恨eval
被许多人滥用的方式:唯一可以接受的eval
是在旧浏览器中支持JSON
。(ps:我不反对投票)@EliasVanOotegem:It ok:)。。。发布此内容时,我不知道访问对象属性的其他语法。。谢谢你的帮助:)
for (var prop in localAppConfig)
{
if (localAppConfig.hasOwnProperty(name))
{
//set, delete... do whatever
}
}