【发布时间】:2011-11-26 21:25:39
【问题描述】:
我正在尝试使用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 个定义中生成随机对象。
【问题讨论】:
-
解决方案在于获取数据的方式。你怎么把代码作为字符串提取?
-
使用“what”作为输入的替代方法?
-
你到底从什么开始?换句话说,字符串本身是从哪里来的?
-
您可以直接使用创建对象的方式,而不是将其置于 eval 下,除非您不是从其他地方动态获取类名/函数名(如在 javascript 中)......
-
这是一个练习使用对象和继承的练习。我创建了一个包含 9 个不同字符串的数组,然后我使用这个数组创建了 100 个对象,使用 Math.random() 为新对象提取字符串。
标签: javascript eval