JS: Имя функции

May 18, 2010 19:04

Иногда, при написании объемного JS-кода требуется выяснить, что за функцию сейчас выполняет веб-сайт. Штатных кроссбраузерных средств для этого мне найти не удалось.
Однако в каждой функции есть массив arguments с переменной callee в которой содержится весь код функции. из него мы можем получить регулярным выражением и интересующую нас строку.

//var test = function               () {
function         test                 ()             {
    this.fuName = /function(.+)\(/gi.exec(arguments.callee);
    if (null != this.fuName) { this.fuName = this.fuName[1].replace(/ /g, '') }
    if ('' == this.fuName) { this.fuName = 'anonymouse' }

alert(this.fuName);
    function test2() {
        //atata
    }
};
test();

Если функция анонимная, то будет anonymouse

arguments, function, js, name

Previous post Next post
Up