Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2009, 11:35
Bercut
 
Сообщений: n/a

Узнать имя функции
Возможно ли, находясь внутри функции, получить её имя?
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2009, 11:51
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

конечно, писать в каждой функции, внутри которой вы можете находиться var name='имя функции';
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2009, 11:53
Аватар для JSprog
L
Отправить личное сообщение для JSprog Посмотреть профиль Найти все сообщения от JSprog
 
Регистрация: 16.08.2009
Сообщений: 416

arguments.callee
__________________
Лови позитив
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2009, 11:57
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

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

Сообщение от JSprog
arguments.callee
Это ссылка функции внутри на саму себя, а не имя.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2009, 12:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

Нужно учитывать, что у функции может не быть имени.
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2009, 12:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Dmitry A. Soshnikov
Это ссылка функции внутри на саму себя, а не имя.
Хотя ему, скорее всего, и не нужно имя.
Ответить с цитированием
  #7 (permalink)  
Старый 28.08.2009, 12:09
Bercut
 
Сообщений: n/a

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

Грубо говоря

function test() {

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

}
Ответить с цитированием
  #8 (permalink)  
Старый 28.08.2009, 14:45
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Bercut
Мне нужно узнать именно имя
Ну написали же уже Вам - и алгоритм и, даже, решение. В чём проблема?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #9 (permalink)  
Старый 01.09.2009, 23:33
Bercut
 
Сообщений: n/a

Сообщение от Dmitry A. Soshnikov Посмотреть сообщение
Ну написали же уже Вам - и алгоритм и, даже, решение. В чём проблема?
Дима, проблема в том, что показанный пример принимает в качестве параметра саму функцию, а мне надо узнать имя изнутри функции, своё собственное имя

судя по всему решения не существует
Ответить с цитированием
  #10 (permalink)  
Старый 01.09.2009, 23:36
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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


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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кросс-браузерные функции B~Vladi Ваши сайты и скрипты 128 01.09.2009 17:11
Как узнать, завершила ли свою работу рекурсивная функция Ajax Общие вопросы Javascript 4 13.05.2009 14:50
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04