我想知道以下 JavaScript 代码有什么问题 -
<html>
<script type="text/javascript">
var p = eval('new { "Color":"Red"}');
alert(p.Color);
</script>
</html>
它给了我JavaScript错误-
Message: Object doesn't support this action
Line: 4
Char: 1
Code: 0
我想知道以下 JavaScript 代码有什么问题 -
<html>
<script type="text/javascript">
var p = eval('new { "Color":"Red"}');
alert(p.Color);
</script>
</html>
它给了我JavaScript错误-
Message: Object doesn't support this action
Line: 4
Char: 1
Code: 0
为什么 eval 在这个片段中不起作用?
因为您不能将new
运算符[MDN]用于对象,只能用于函数。
{"Color":"Red"}
被评估为对象文字而不是函数。
如果要解析 JSON,请使用JSON.parse
[MDN]。另请参阅JSON.parse 与 eval()。
或者直接创建对象文字,如果它是静态的:
var p = {"Color":"Red"};
要使其与eval
(无论如何都应避免使用)一起使用,请删除new
文字并将其括在括号中:
var p = eval('({"Color":"Red"})');
括号是必要的,因为否则 JavaScript 将评估{"Color":"Red"}
为一个块并引发错误。