2016-09-02 7 views
6

У меня проблемы с получением имени конструктора при использовании классов ES6 в Firefox. В Chromium он отлично работает, но у Firefox, похоже, есть какая-то ошибка? В Firefox я получаю только пустую строку. Любой, кто знает об обходном пути?Firefox ES6, получить имя класса конструктора

class MyClass {} 
let a = new MyClass(); 
console.log(a.constructor.name); 
+1

Итак, когда вы получаете доступ 'MyClass.name' первых, это работает. Когда вы сначала открываете '.constructor.name', это пустая строка. Странно, я догадываюсь об ошибке. Вот пример скрипта: https://jsfiddle.net/gveopgu8/ –

+2

Эти проблемы могут иметь какое-то отношение: https://bugzilla.mozilla.org/show_bug.cgi?id=1192412 https://bugzilla.mozilla.org /show_bug.cgi?id=1280042 –

+2

Возможно, хорошие новости, я не могу воспроизвести в Firefox Developer Edition (на основе 50.0), поэтому он, возможно, уже исправлен в предстоящей версии. –

ответ

1

Я думаю, что это ошибка (в соответствии с комментарием ниже).

Похоже, что указание явного конструктора показывает правильное поведение в Firefox (даже в последней версии 48).

class MyClassWithConstructor { 
 
    constructor() { 
 
    console.log("Explicit Constructor") 
 
    } 
 
} 
 

 
class MyClassWithoutConstructor {} 
 

 
$('#with').click(function() { 
 
\t let tmp = new MyClassWithConstructor(); 
 
\t alert("MyClassWithConstructor name = " + tmp.constructor.name); 
 
}) 
 

 
$('#without').click(function() { 
 
\t let tmp = new MyClassWithoutConstructor(); 
 
\t alert("MyClassWithConstructor name = " + tmp.constructor.name); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id=with>With Constructor</button> 
 

 
<button id=without>Without Constructor</button>

Вот ссылка на JSFiddle: https://jsfiddle.net/jc7g5crp/

+2

Это особенность ES6 и кажется ошибкой в ​​FF. – Bergi