@ange007
Программист, просто программист.

Как узнать имя «класса» в JS при передаче его в функцию?

Имеется "класс":
Class = function( )
{
	// ***
};

Class.prototype.func = function( layer )
{
	// ***
};

Делаю наследование:
boot.inherit = function( Child, Parent )
{
	// Наследуемся
};

boot.inherit( newClass, Class );


Вопрос: Каким образом узнать имя Parent (переменной, которой назначена функция), без необходимости записи его как параметр?
  • Вопрос задан
  • 8671 просмотр
Решения вопроса 1
У вас используется анонимная функция, так что никак.
Если у вас используется именованная функция - у неё есть свойство name. Оно не поддерживается IE, если нужна его поддержка - можно выдрать имя из исходников функции.

function Class(){}
Class.name // => 'Class'
function getName(it){
  var match = /^\s*function\s+(\b\w+\b)/.exec(it);
  if(match)return match[1];
}
getName(Class) // => 'Class''

Однако, это чуть менее, чем полностью бесполезно - после сжатия вашего кода имя конструктора и, соответственно, значение свойства name превратится из 'Class' в какой-нибудь 'tF'.
Если вам нужно получить именно имя функции - добавляйте к функции и используйте свойство displayName - за одно и профилирование кода улучшите.

function Class(){}
Class.displayName = 'Class';
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы