Список глобальных пользовательских функций в JavaScript?
Можно ли получить список пользовательских функций в JavaScript?
В настоящее время я использую это, но он возвращает функции, которые не определены пользователем:
var functionNames = [];
for (var f in window) {
if (window.hasOwnProperty(f) && typeof window[f] === 'function') {
functionNames.push(f);
}
}
Ответы
Ответ 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)};
Не удалось сообщить "вещь".