Позвольте LightTable показать детали объекта javascript

Как сделать так, чтобы LightTable показывал подробности JavaScript-объекта?

В настоящее время я оцениваю формы ClojureScript внутри LightTable с подключением к внешнему браузеру с помощью тега script. При оценке формы форма возвращается [object Object] как результат оценки, и я хочу видеть содержимое этого объекта.

1 ответ

Решение

[Object Object] является строковым представлением объектов Javascript по умолчанию. К сожалению, объекты JS намного более непрозрачны, чем структуры данных Clojure(скрипт). Есть несколько способов улучшить ситуацию, но ни один из них не является префектом.

Вы можете перезаписать метод toString() для объекта или его прототипа и вернуть пользовательский формат. Это фактически изменит форматирование, когда LightTable попытается напечатать объект. Вы меняете метод, используя стандартное взаимодействие JS, например:

(set! (.-toString o) (fn [obj] "some text"))

Существуют всевозможные способы проверки объекта, который вы можете использовать для получения желаемого форматирования. Смотрите этот вопрос для вдохновения: Как проверить объекты Javascript

Другой способ - просто зарегистрировать объект на консоли, если вы разрабатываете для браузера. Скорее всего, вы получите более подробное описание, чем стандартное, в зависимости от того, какой браузер вы используете.

(defn log [o]
    (.log js/console o))

Надеюсь это поможет!

Другие вопросы по тегам