我在HTML部分中有以下代码:
<script>
var trainings = {'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)};
</script>
此代码运作良好,并且“#Player; PlayerTraining&#39;是在上面引用的一个js文件中定义的类。
但是当我执行时:
<script>
alert(eval("{'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)}"));
</script>
我收到以下错误:
Uncaught SyntaxError:意外的令牌:
我做错了什么?最后,我需要将该哈希值(从WebService接收)分配给变量。怎么做?
请告知。
答案 0 :(得分:1)
您可以像这样评估对象。
与您的示例类似,这将引发语法错误:
{ a: new Date(), b: new Date() }
这是因为你错过了一个变量赋值:
var x = { a: new Date(), b: new Date() }
但是,您不应该首先使用eval
。 It's unsafe, and inefficient
答案 1 :(得分:1)
要使其工作,您应该将表达式包装在括号中:
alert(eval("({'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)})"));
并将结果分配给变量,如下所示:
var someVar = eval("(" + webServiceResponse + ")");
答案 2 :(得分:0)
在eval
内将您的对象分配给var:
eval("var myVar = {'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)};");
alert(myVar);
但无论如何,如果你把对象作为字符串,你可以解析为json。