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