使用eval方法从Firefox

时间:2016-09-02 18:49:55

标签: javascript firefox eval es6-class

我尝试过的(在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有什么不同?

2 个答案:

答案 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)