javascript - 动态创建对象,eval 的替代方法是什么?

标签 javascript eval

我正在尝试使用 eval(string) 动态创建对象。我一直无法找到使用 eval 或至少我能理解的东西的替代方法。

我循环遍历如下代码,字符串随机变化,为包含对象定义的字符串数组选取。

llista[dia] = eval('new Accident_mortal("EP-8", 17, "accident helicopter", 1, 2, 0)');

从我所读到的所有内容来看,使用 eval 是一件坏事,但我想不出还有什么办法可以做到这一点。

编辑

我认为 Lolo 的代码是我需要的,我可以执行以下操作吗?

var o = [  
    { clazz1: 'Accident_mortal', args: ["EP-8", 17, "accident helicopter", 1, 2, 0] },  
    { clazz2: 'Accident_mortal', args: ["B45", 101, "accident camio", 4, 3, 1] },  
    { clazz3: 'Accident_mortal', args: ["C19", 234, "accident tot terreny", 2, 1, 1] }  
}

var o里面最多9个对象,然后用他提出的代码从这9个定义中生成随机对象。

最佳答案

如果你可以用对象数组替换字符串数组,那么你可以试试这个:

function construct(constructor, args) {
    function F() {
        return constructor.apply(this, args);
    }
    F.prototype = constructor.prototype;
    return new F();
}

// objects definitions
var o = [
    { clazz: 'Accident_mortal', args: ["EP-8", 17, "accident helicopter", 1, 2, 0] }
]
// create objects
for (var i = 0; i < o.length; ++i) {
    var x = construct(window[o[i].clazz], o[i].args);
}

关于javascript - 动态创建对象,eval 的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281733/

相关文章:

c# - 从客户端获取修改后的对象并将其与服务器上的原始对象组合

bash - 如何在 bash 中组合超时和 eval 命令

bash - bash 中的间接变量赋值

javascript - jquery ajax - 查询参数的表单序列化问题

Javascript - 反转模态动画

javascript - 当 DOM 中的元素太多时,Angular ng 类性能问题

javascript - 通过 javascript 引用 ENV 变量

php - Laravel 中的 eval() 不执行字符串

makefile - 在 makefile 中正确使用 call 函数

css - 在 aspx 文件中使用 eval 动态更改 css