Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.10.2010, 15:36
Аспирант
Отправить личное сообщение для mister_maxim Посмотреть профиль Найти все сообщения от mister_maxim
 
Регистрация: 09.02.2009
Сообщений: 57

arguments вызвавшей функции
Как на javascript узнать ссылку на объект arguments, вызвавшей текущую функцию, функции, внутри текущей функции?
--
По другому сформулирую вопрос.
Функция A вызывает функцию B.
Мне надо код только в теле функции B, который может вернуть ссылку на объект argunents.
Но объект arguments не функции B, a функции A. т.е. ссылку которую можно получить находясь в функции A просто написав "arguments".
Какой это код?
--
что мне сообственно нужно.
Мне нужно получить возможность двигаться по стеку вызовов функций, вот я знаю что,
1.можно узнать текущую функцию: arguments.callee,
2.можно узнать вызвавшую функцию: arguments.caller
В принципе не пойму разработчиков javascript, которые вместо второй возможности не сделали возможность получать arguments вызвавшей фунции, тогда можно было бы легко реализовать и вторую возможность например:
arguments.callerArguments.callee вместо arguments.caller,
а главное путешествовать по всему стеку вызовов:
arguments.callerArguments.callerArguments.... а не только на одну две позиции.
Или уже есть свойство со смыслом вышеприведенного callerArguments, только я о нём не знаю?
Ответить с цитированием
  #2 (permalink)  
Старый 12.10.2010, 15:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Никак.

Стек в текстовом виде не во всех браузерах можно получить, создав объект ошибки new Error().
Ответить с цитированием
  #3 (permalink)  
Старый 12.10.2010, 16:06
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

А разве arguments.callee.caller.arguments - не то, что надо?
function A(){ B(); };
function B(){
  alert(arguments.callee.caller.arguments[0]);
};
A('argument');
Ответить с цитированием
  #4 (permalink)  
Старый 12.10.2010, 16:20
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Sweet,
действительно.
Ответить с цитированием
  #5 (permalink)  
Старый 12.10.2010, 16:21
Аспирант
Отправить личное сообщение для mister_maxim Посмотреть профиль Найти все сообщения от mister_maxim
 
Регистрация: 09.02.2009
Сообщений: 57

Спасибо, Sweet - сработало!
я просто думал что свойства callee и caller - это свойства только объекта arguments, оказывается они есть и у объекта функции...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Специфические функции и свойства различных браузеров onejsquestion Javascript под браузер 3 28.06.2010 10:54
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Возвращение значения из функции dba Events/DOM/Window 21 06.10.2009 01:33
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04