在 Firefox 中使用 eval 方法从字符串中获取 class

Using eval method to get class from string in Firefox

我尝试过的方法(在 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() returns ReferenceError: A is not defined.

Firefox 有何不同?

将整个 class 字符串放在括号中有效。

固定代码:

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

我尝试了另一种方法,它的工作原理与使用括号一样,而且看起来更简单,因为它不会污染全局名称。

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

console.log(result)