Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Узнать имя функции (https://javascript.ru/forum/misc/4895-uznat-imya-funkcii.html)

Gvozd 01.09.2009 23:37

Bercut
очень трудно сопоставить между собой два сообщения, и составить общий код?
Цитата:

Сообщение от Dmitry A. Soshnikov
Сообщение от JSprog
arguments.callee
Это ссылка функции внутри на саму себя, а не имя.

Цитата:

Сообщение от Kolyaj
function test() {
alert(23);
}
function getFnName(fn) {
return fn.toString().match(/function ([^(]*)\(/)[1];
}
alert(getFnName(test));
Нужно учитывать, что у функции может не быть имени.


jsru_ 17.03.2014 13:55

function functionName(fun) {
  var ret = fun.toString();
  ret = ret.substr('function '.length);
  ret = ret.substr(0, ret.indexOf('('));
  return ret;
}

andypop 26.07.2014 01:35

function GetRelationShips(){
   var f=arguments.callee;
    RunEndFetch({fn:f})
}
function RunEndFetch(obj){
console.log(obj.fn.name) // GetRelationShips
}

Erolast 26.07.2014 08:07

Ужасное оформление. Какие-то ни о чем не говорящие имена f, obj. Уёб Ужасная отбивка. Названия функций с большой буквы.

Aetae 26.07.2014 08:34

Цитата:

Сообщение от Erolast (Сообщение 322789)
Ужасное оформление. Какие-то ни о чем не говорящие имена f, obj. Уёб Ужасная отбивка. Названия функций с большой буквы.

...да и .name нигде кроме ff не работает. О чём было сказано в этой теме ещё пять лет назад. Нормальное решение задачи было приведено тогда же.

melky 26.07.2014 09:34


andypop 26.07.2014 10:20

Работает еще в nodejs. var f - это переменная. Она может быть любая. Функция это сигнал поэтому с большой буквы.

Erolast 26.07.2014 11:01

Цитата:

var f - это переменная. Она может быть любая.
Да ну? А я-то не знал...
По названиям переменных и функций должно быть четко ясно, для чего они предназначенны. Вот как, скажи, можно понять, что делает функция "RunEndFetch(obj)"?
Цитата:

Функция это сигнал поэтому с большой буквы.
Чо? С большой буквы принято начинать название класса (в жс конструктора), переменные и функции именуются с маленькой.

andypop 26.07.2014 11:40

RunEndFetch - диспатчит сигнал EndFetch и передает ему имя функции и результат фетча в объект для последующей обработки в хэндлере onEndFetch. Я пишу с большой, чтобы отличить запуск сигнала от других функций. Мне так хочется.

Erolast 26.07.2014 12:58

Збс как очевидно.


Часовой пояс GMT +3, время: 07:52.