javascript - 邪恶的 Eval() 不向对象添加属性

标签 javascript json object eval

我想向具有动态属性名称的对象添加属性。

为此,我使用了 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/

相关文章:

javascript - 修改正则表达式以获得最大长度

javascript - 如何将 'tap' 和 'doubletap' 绑定(bind)到 Hammer.js 中的同一元素?

javascript - 将 json 键映射到 javascript 对象

json - 显示网络服务公开嵌套或平面列表?

JavaScript:对象(变量)是什么?

javascript - 向tinyMCE添加自定义下拉菜单并插入动态内容

javascript - 如何最好 "dynamically"使 javascript 有条件根据多个可能的键值对查找匹配项?寻找解决方案

android - 在 Android 中解析嵌套的 JSON 对象

ajax - 在 jquery ajax 中传递嵌套对象

javascript - 如何有条件地将属性添加到 javascript 对象文字