Есть много старых вопросов о сбросе объектов JavaScript.Дамп JavaScript-объект, включающий в себя функциональные тела как «достаточно хороший» код для форматирования
Но те, которые указывают на сброс содержимого функций, я могу найти только те, которые испускают эти функции в виде строк в кавычках (с закрытыми внутренними кавычками).
То, что я хочу является то, что сбрасывает объекты, в том числе функций, в полной мере, в простом старом формате JavaScript готов быть довольно напечатанной.
- Я не нужна полные сериализации и десериализации как некоторые предыдущие вопросы.
- I do необходимо посмотреть объект как текст. Просто использование
console.log()
требует взаимодействия для разворачивания элементов объекта и т. Д. Сохранение буфера консоли как текста послеconsole.log()
не приводит к синтаксису простого js, который может быть довольно печатным. - Выделите заполнители или такие ссылки для ссылок, которые не могут быть сброшены (круговые ссылки, DOM-ссылки и т. Д.). Должно быть не просто barf, когда он попадает на него.
Вот the naive approach, которая сбрасывает функцию текста, но в кавычках, что довольно принтер не будет форматировать как код:
JSON.stringify(someObject, function(key, val) {
return (typeof val === 'function') ? val.toString() : val;
}, 4);
Для тестового объекта {a: 1, b: 'bb', c: "bb", f: function e() {return "x";} }
наивные подход выходов:
{
"a": 1,
"b": "bb",
"c": "bb",
"f": "function e() {return \"x\";}"
}
Что мне нужно:
{
"a": 1,
"b": "bb",
"c": "bb",
"f": function e() {
return "x";
}
}
Я доволен, что это будет закрыто как дубликат, если один из предыдущих ответов сделает то, что я хочу. Я смотрел на многих из них и не мог найти его.
(Use case: Создание регистрационного имени TaperMonkey для стороннего сайта. Мне нужно посмотреть, что на самом деле доступно для поиска мест для добавления пользовательских перехватов. Я буду украшать выходные данные, распечатывать их, загружать в редактор кода , и т. д.)
Я должен что-то недоразумение. Не работает ли ваш подход? –
Нет. Он выводит цитируемые функции, поэтому красивый принтер просто видит строки и не переформатирует их. Я собираюсь добавить образец вывода к моему вопросу. – hippietrail
Почему вы передаете строку в 'JSON.stringify'? Разве это не значит, что ваши цитаты ускользают? – Mathletics