Как Chrome и Firefox выводят имя класса объекта в консоли?

Если я создаю класс Foo с использованием «традиционных» классов Javascript, и chrome, и Firefox будут отображать имя Foo при печати экземпляров Foo на консоли:

function Foo(){
    this.x = 10;
}

console.log(new Foo());
// Foo {x: 10}

С другой стороны, если я использую наследуемое прототипное наследование, то при отладке я не получаю полезного имени.

function mkClass(init, proto){
    return function(/**/){
         var obj = Object.create(proto);
         init.apply(obj, arguments);
         return obj;
    }
}

var Bar = mkClass(function(){ this.x = 10 }, {});

console.log(Bar());
// Object {x: 10}

Есть ли способ, чтобы классы, созданные в моей прототипной системе, отображали свое имя при печати на консоли? До сих пор я мог думать только о том, как уродливый хакер злоупотребляет eval, чтобы присвоить различные имена текущей анонимной функции конструктора, которую возвращает mkClass.

Ответы на вопрос(1)

Ваш ответ на вопрос