5

我尝试了什么(适用于 chrome)

var class_str = "class Test {};";
var a = eval(class_str);
console.log(new a());

在 Firefox 46 中引发以下错误:

TypeError: a is not a constructor

a未定义并使用new A()返回ReferenceError: A is not defined

Firefox 有什么不同?

4

2 回答 2

10

将整个类字符串放在括号中是可行的。

固定代码:

var class_str = "(class Test {})";
var a = eval(class_str);
console.log(new a());
于 2016-09-02T19:11:19.390 回答
1

我尝试了另一种方法,就像使用括号一样,括号似乎更简单,因为它不会污染全局名称。

result = eval(`(class a{})`)

console.log(result)

result = eval(`class a{} window.a=a`)

console.log(result)
于 2019-07-25T09:01:14.343 回答