当我在ClojureScript REPL中访问以下JS对象时,我收到了这个美:
#object[Url [object Object]]
如何检查/查看内部/将其转换为Clojure数据结构?
我发现,当对象是由构造函数使用JavaScript的new关键字创建时,Clojure REPL对对象的内容只保持安静。 (但是像Array这样的内置构造函数似乎是一个例外)
cljs.user=> #js {:a "x"}
#js {:a "x"}
cljs.user=> (defn A [] (this-as my-this (set! (.-a my-this) "x")))
#'cljs.user/A
cljs.user=> (A.)
#object[cljs$user$A [object Object]]
这让我很困惑,因为 - 正如答案中所提到的 - 浏览器的REPL(至少是chrome和firefox)会打印出这些对象的内容。 Node.js REPL也是如此。 函数js-> clj在这里没有帮助。如上面的代码所示,Clojure REPL甚至可以打印未转换的JavaScript对象的内容。
到目前为止,我找不到一种方法来检查整个这类对象的内容。我只能单独访问这些属性。 e.g:
cljs.user=> (.-a (A.))
"x"
有没有人碰到同样的问题,甚至可能找到解决方案或解释?
答案 0 :(得分:1)
问题是从#object[Url "..."]
投射到#object[Object "..."]
最后,我用这个好老助手功能做到了。
(defn clone-js [jsobj]
(.parse js/JSON (.stringify js/JSON jsobj)))
如果有合适的解决方案,我仍然很感激。
答案 1 :(得分:0)
将其登录到控制台并使用chrome / firefox
查看答案 2 :(得分:0)