在 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)
我尝试过的方法(在 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)