Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить имя текущей ф-ции внутри ф-ции (https://javascript.ru/forum/misc/38363-poluchit-imya-tekushhejj-f-cii-vnutri-f-cii.html)

ruslan_mart 29.05.2013 16:48

Получить имя текущей ф-ции внутри ф-ции
 
Доброго времени суток, форумчане. Возможно по названию темы некоторым этот вопрос показался глупым, ибо зачем получать имя ф-ции?

Есть допустим такой код:

var addElement = function(a, b)
{
    var funcName = ????
    if(funcName == 'addElement') alert('Hello World!');
    else alert('Goodbay World!');
    //Code
}

var addText = addElement;


По сути, addText() будет одно и то же, что и addElement(). Но вот нужно определить с какой конкретно идёт обращение к ф-ции? Точнее, как определить имя этой ф-ции внутри ф-ции?
Буду благодарен за помощь. :)

ANAGAMA 29.05.2013 17:40

типа такого

http://stackoverflow.com/questions/2...-in-javascript

ruslan_mart 29.05.2013 17:54

ANAGAMA, ну если было бы просто function addElement(), то да, а тут var addElement = function()

Aetae 29.05.2013 18:10

addText и addElement в данном случае имена переменных и никакого отношения к самой функции не имеют.

zOdmin 29.05.2013 21:13

var addElement = function(a, b, funcName)
{
    //var funcName = ????
    if (!funcName) funcName='addElement';
    if(funcName == 'addElement') alert('Hello World!');
    else alert('Goodbay World!');
    //Code
}
 
var addText = function(a,b) { return addElement(a,b,'addText'); };

elnoro 29.05.2013 23:04

Завтра может допишу код, пока не могу.
Идея такова: берем this функции и проходимся по его свойствам, сравнивая toString() каждого свойства с toString() самой функции, т. е. фактически ищем функцию по исходному коду. Рецепт не универсален, но может сработать.

Каюсь, невнимательно прочитал условие.

ANAGAMA 30.05.2013 17:30

Цитата:

Сообщение от Ruslan_xDD (Сообщение 253398)
ANAGAMA, ну если было бы просто function addElement(), то да, а тут var addElement = function()

Ухумс, у меня как то была задача где возникало желание узнать, хто ж вызывает, но обошелся иными, правильными способами.


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