我尝试过的(在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有什么不同?
答案 0 :(得分:5)
将整个类字符串放在括号中。
固定代码:
var class_str = "(class Test {})";
var a = eval(class_str);
console.log(new a());
答案 1 :(得分:0)
我尝试了另一种方法,该方法的作用就像使用括号,并且括号似乎更简单,因为它不会污染全局名称。
result = eval(`(class a{})`)
console.log(result)
result = eval(`class a{} window.a=a`)
console.log(result)