Подтвердить что ты не робот

Список глобальных пользовательских функций в JavaScript?

Можно ли получить список пользовательских функций в JavaScript?

В настоящее время я использую это, но он возвращает функции, которые не определены пользователем:

var functionNames = [];

for (var f in window) {
    if (window.hasOwnProperty(f) && typeof window[f] === 'function') {
        functionNames.push(f);
    }
}
4b9b3361

Ответ 1

Я предполагаю, что вы хотите отфильтровать собственные функции. В Firefox Function.toString() возвращает тело функции, которое для собственных функций будет иметь вид:

function addEventListener() { 
    [native code] 
}

Вы можете сопоставить шаблон /\[native code\]/ в своем цикле и опустить функции, которые соответствуют.

Ответ 2

Как предложил Четан Састри в своем ответе, вы можете проверить существование [native code] внутри стробируемой функции:

Object.keys(window).filter(function(x)
{
    if (!(window[x] instanceof Function)) return false;
    return !/\[native code\]/.test(window[x].toString()) ? true : false;
});

Или просто:

Object.keys(window).filter(function(x)
{
    return window[x] instanceof Function && !/\[native code\]/.test(window[x].toString());
});

в chrome вы можете получить все нелокальные переменные и функции:

Object.keys(window);

Ответ 3

Использование Internet Explorer:

var objs = [];
var thing = {
  makeGreeting: function(text) {
    return 'Hello ' + text + '!';
  }
}

for (var obj in window){window.hasOwnProperty(obj) && typeof window[obj] === 'function')objs.push(obj)};

Не удалось сообщить "вещь".