Как динамически установить имя функции / объекта в Javascript, как оно отображается в Chrome

Это то, что меня беспокоит в отладчике Google Chrome, и мне было интересно, есть ли способ решить эту проблему.

Я работаю над большим приложением Javascript, использующим много объектно-ориентированного JS (с использованием структуры Joose ), и когда я отлаживаю свой код, всем моим классам присваивается бессмысленное начальное отображаемое значение. Чтобы понять, что я имею в виду, попробуйте это в консоли Chrome:

var F = function () {};
var myObj = new F();

console.log(myObj);

Вывод должен быть одной строкой, которую можно развернуть, чтобы увидеть все свойства myObj , но первое, что вы увидите, это просто ▶ F .

Моя проблема состоит в том, что из-за моей объектно-ориентированной структуры каждый экземпляр объекта получает одно и то же «имя» . Код, который, как он выглядит, отвечает за это:

getMutableCopy : function (object) {
    var f = function () {};
    f.prototype = object;
    return new f();
}

Это означает, что в отладчике начальное представление всегда ▶ f .

Я действительно не хочу быть изменить что-либо в , как Joose создает экземпляры объектов (getMutableCopy ...?) , но если бы я мог что-то добавить к этому, чтобы я мог указать свое собственное имя, это было бы здорово .

Некоторые вещи, на которые я смотрел, но никак не мог понять:

> function foo {}
> foo.name
  "foo"
> foo.name = "bar"
  "bar"
> foo.name
  "foo"    // <-- looks like it is read only

39
задан nickf 3 May 2011 в 14:29
поделиться