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

Bercut 28.08.2009 11:35

Узнать имя функции
 
Возможно ли, находясь внутри функции, получить её имя?

Tim 28.08.2009 11:51

конечно, писать в каждой функции, внутри которой вы можете находиться var name='имя функции';

JSprog 28.08.2009 11:53

arguments.callee

Dmitry A. Soshnikov 28.08.2009 11:57

В Мозилльной реализации, есть свойство .name, в остальных случаях, можно (если функция не анонимная) через .toString() + RegExp.

Цитата:

Сообщение от JSprog
arguments.callee

Это ссылка функции внутри на саму себя, а не имя.

Kolyaj 28.08.2009 12:01

function test() {
        alert(23);
    }
    function getFnName(fn) {
        return fn.toString().match(/function ([^(]*)\(/)[1];
    }
    alert(getFnName(test));

Нужно учитывать, что у функции может не быть имени.

Kolyaj 28.08.2009 12:01

Цитата:

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

Хотя ему, скорее всего, и не нужно имя.

Bercut 28.08.2009 12:09

Мне нужно узнать именно имя

Грубо говоря

function test() {

    alert( [некое_выражение_которое_вернёт:test] );

}

Dmitry A. Soshnikov 28.08.2009 14:45

Цитата:

Сообщение от Bercut
Мне нужно узнать именно имя

Ну написали же уже Вам - и алгоритм и, даже, решение. В чём проблема?

Bercut 01.09.2009 23:33

Цитата:

Сообщение от Dmitry A. Soshnikov (Сообщение 28570)
Ну написали же уже Вам - и алгоритм и, даже, решение. В чём проблема?

Дима, проблема в том, что показанный пример принимает в качестве параметра саму функцию, а мне надо узнать имя изнутри функции, своё собственное имя

судя по всему решения не существует

Kolyaj 01.09.2009 23:36

function someFunction() {
    alert(getFnName(arguments.callee));
}


Хотя бред какой-то, узнавать имя функции внутри нее самой.


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