Показать сообщение отдельно
  #7 (permalink)  
Старый 27.06.2017, 17:29
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

function getFunctionName(func) {
	if(typeof func === 'function') {
  	const funcNameArr = /^\s*function\s*([^\(]*).*/i.exec(func.toString());
    if(funcNameArr && funcNameArr[1]) {
    	return funcNameArr[1];
    } else {
    	return 'anonymous';
    }
  } else {
  	throw new Error('That\'s not function');
  }
}

function example(a) {
	console.log('example function', a);
}
var d = () => {};

console.log(getFunctionName(example));
console.log(getFunctionName(d));


Правда с точки зрения практики, в этом особого смысла нет. Если вы конечно не собираетесь делать всякие разные проверки на имя входящей функции. Ну и изначальная конструкция с this работать не будет. Так как this это контекст функции, и он обычно не совпадает с самой функцией.

Последний раз редактировалось EmperioAf, 27.06.2017 в 17:42.
Ответить с цитированием