我想向具有动态属性名称的对象添加属性。
为此,我使用了 eval()
,但编译器返回: Unexpected token
。我正在做的事情是否可行,或者 eval()
不能用于 str vars 这样的对象
这是我的一些代码
var options = {}; // Creating empty object
$("#selAdresse, #selCP, #selVille, #selPays, #selNom, #selDescription").live('change', function(){
var opt = eval("var options.lol"); // The evil eval();
opt = "Test"; // Trying to set options.lol = "test"
console.log(options); // Returning an empty object... Nothing change
});
最佳答案
您不使用 var
向对象添加属性。您使用 var 来初始声明变量:
var foo = {};
添加属性很简单:
foo.bar = null;
如果您有一个包含属性名称的字符串,则可以使用方括号表示法:
var propName = 'bar';
foo[propName] = null;
编辑: 根据您对 kbok 的评论,方括号表示法就是您想要的:
var options = {};
options[ $( this ).attr( 'id' ) ] = 'Test';
结束编辑
为了具体说明您的问题(尽管您不应该这样做,并且有很多方法可以避免它),您的 eval 的语法如下所示:
eval( 'foo.bar = null;' );
关于javascript - 邪恶的 Eval() 不向对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6762369/