Как DevTools определяет имя конструктора объекта?

Я использую Chrome v22.0.1229.94 m, не то чтобы это должно было иметь значение, но на всякий случай :-)

Мобильность меня не касается. Пока это работает с Chrome (и Safari), я счастлив.

У меня есть две функции, foo и bar:

var foo = function() {
  ...
}
function bar() {
  ...
}

тогда, если я создаю объекты, используя их:

f1 = new foo();
b1 = new bar();

Я могу получить имя конструктора для bar, но ни для foo:

> f1.constructor.name  ==> ""
> b1.constructor.name  ==> "bar"

все же в обоих случаях консоль DevTools покажет имена "foo" и "bar" при проверке переменныхf1 а такжеb1.

Как извлечьимя Foo заf1 как DevTools умеет?

 CyberFonic18 окт. 2012 г., 01:22
@Mohsen спасибо за скриншот и ваш комментарий.
 Mohsen18 окт. 2012 г., 01:20
Это интересно. Это как devtools называют произвольную функцию анонимной. Смотрите это тоже:var foo = function myfoo(){}; new foo(); ==> myfoo
 Wilt04 мар. 2016 г., 14:58
Это потрясающий вопрос, и я не могу поверить, что это само по себе невозможно получить это имя из функции ... Мне это нужно: D Удачи в поиске решения ??

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

предоставляя эту информацию через свои API. Вы не сможете извлечь эту информацию, используя обычные свойства объекта.

 Wilt04 мар. 2016 г., 14:59
Неужели невозможно получить это имя? Невероятно ...
 CyberFonic18 окт. 2012 г., 23:31
Я не против использования V8 API (не требуется переносимость). Можете ли вы указать мне направление документации этого API.

fooсоздаешьвыражение функции, Это означает, что вы назначаетеанонимная функция к переменной.

Вы не можете разрешить функциюname программно так, если только вы не дадите имя функции и не создадитевыражение именованной функции».

var foo = function foo() {
  ...
}
 Mohsen18 окт. 2012 г., 01:14
Его вопрос в том, как инструменты разработчика показывают объект с именемfoo взаменnew foo()?

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