Javascript.RU

Дамп объектов или сделаем жизнь проще

Зачастую при отладке js-скриптов нам нужно получить развёрнутый дамп того или иного объекта. Не менее полезной является возможность навигации по дереву DOM, свойствам объектов и т.д. Обычно такой функционал на себя берут плагины к браузерам, вроде firebug для лисы. Но браузеров много и их кол-во постоянно растёт. Написание кроссбраузерных скриптов становится всё менее тривиальной задачей. Поэтому я попробовал частично решить проблему через скрипт, способный выводить дамп объектов в виде topmost div-ов с синтаксической подсветкой типов, возможностью навигации практически во всех современных браузерах. Для пущего удобства в движок был вставлен код, выводящий стёк вызовов с аргументами функций.

Скрипт (Dump.js) использует глобальную переменную Uses как контейнер модулей, одним из которых он и является. Доступ к нему можно получить обращаясь к Uses.Dump. Основной функцией, необходимой в повседневной работе является Dump().

Uses.Dump.Dump = function (Obj, ObjName);
// Obj - объект для дампа
// ObjName - имя объекта, которое будет показано в верхней части панели

Скрипт позволяет делать множество снимков (дампов), каждый из которых имеет всё больший приоритет topmost на экране. Навигация между ними осуществляется посредством select-a, который привязан к левому верхнему углу экрана. Пример вызова функции Dump на тестовом объекте: Смотреть

Слева от каждого элемента расположена пара кнопок "O" и "V", позволяющих просмотреть содержимое дочернего объекта/свойства в одном из двух режимов: "O" - режим объекта, "V" - режим значения. Так, просмотр Test.obj в объектном режиме отобразит список свойств объекта, а в режиме значения строку: "object ТипОбъекта".

Просмотр функции выводит её код с учётом форматирования. Все особые символы экранируются.

Исходный код скрипта (13.4 КБ) прилагается.

Прикрепленный файлРазмер
Dump.js_.txt13.4 кб
+2

Автор: Гость (не зарегистрирован), дата: 9 ноября, 2009 - 16:17
#permalink

Дампер не работает. зачем выкладывать то, что не функционирует?

в ФФ скрипт зависает, через какое-то время предлагает остановить


Автор: Berserker, дата: 8 июня, 2010 - 22:51
#permalink

Проверено на всех последних версиях Оперы, Лисы и Хрома, что у меня стоят. Не могли бы вы подробнее описать, что делаете?
Пример: http://picfu.net/852614/original.png


Автор: optimizm (не зарегистрирован), дата: 27 мая, 2011 - 11:25
#permalink

Полезная штуковина. Спасибо! Оформлена только жутко, ну ничего, это можно подкрутить:)


Автор: Гость, дата: 29 августа, 2011 - 14:25
#permalink

Лишняя работа.
Все актуальные браузеры имеют встроенные средства отладки, либо легко добываемые плагины.
Работаю JavaScript-разработчиком, и абсолютно уверенно говорю, потребности в самодельных средствах не существует.
Если только вы не намерены писать что-то, более мощное, чем FireBug и его аналоги.


Автор: Гость (не зарегистрирован), дата: 21 мая, 2013 - 13:21
#permalink

JavaScript используется не только в браузерах. Бывает, что единственной доступной функцией для отладки является запись строки в лог. В таких случаях функция дампа весьма полезна.


Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 02:33
#permalink

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 6 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Другие записи этого автора
Berserker
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Популярные таги
Последние комментарии
Последние темы на форуме
Forum