Я пытаюсь рекурсивно распечатать содержимое jQuery . Я планирую использовать это для анализа существующего экземпляра jQuery (загруженного на странице) по небольшой базе данных известных «сигнатур jQuery», чтобы определить, какие изменения были внесены (т.е. какие плагины были загружены, функции изменены и т. Д.). .).
Для этого у меня есть небольшая функция:
function recurse(obj, iter){
var padding = (new Array(iter + 1)).join(" ") + ">";
for (var i in obj){
document.writeln(padding + i + "<br/>");
if (iter < 5)
recurse(obj[i], iter + 1);
}
}
Когда я выполню это:
recurse(jQuery, 1);
Я получаю что-то вроде этого:
>prototype
>init
>prototype
>init
>prototype
>selector
>jquery
>0
.... On and on and on .....
Моя проблема в том, что в самом начале вы можете видеть, что prototype
и затем init
повторяются снова и снова. Единственная причина, по которой он остановился на глубине 5 - это проверка if (iter < 5)
. Если бы не было предела, он бы повторился [так?] Навсегда. Предел итерации помогает, но что, если есть критическая функция 6 глубоко? По сути, я понятия не имею, что я должен сделать этот предел итерации, или если он вообще должен быть.
Вместо этого я думаю, что должен быть какой-то алгоритм, который может предотвратить бесконечную рекурсию. Существует ли такой алгоритм? Или я должен изменить способ обхода jQuery? Спасибо,