Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   arguments вызвавшей функции (https://javascript.ru/forum/misc/12327-arguments-vyzvavshejj-funkcii.html)

mister_maxim 12.10.2010 15:36

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, только я о нём не знаю?

Kolyaj 12.10.2010 15:40

Никак.

Стек в текстовом виде не во всех браузерах можно получить, создав объект ошибки new Error().

Sweet 12.10.2010 16:06

А разве arguments.callee.caller.arguments - не то, что надо?
function A(){ B(); };
function B(){
  alert(arguments.callee.caller.arguments[0]);
};
A('argument');

Kolyaj 12.10.2010 16:20

Sweet,
действительно.

mister_maxim 12.10.2010 16:21

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


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