gpt4 book ai didi

javascript - 通过 'new' 检查 ClojureScript REPL 中构造的 JavaScript 对象

转载 作者:行者123 更新时间:2023-11-30 00:15:58 25 4
gpt4 key购买 nike

当我在 ClojureScript REPL 访问以下 JS 对象时,我收到了这个美丽的消息:

#object[Url [object Object]]

我如何检查它/查看里面的内容/将它转换为 Clojure 数据结构?


我发现,只有当对象是由带有 JavaScript 的 new 关键字的构造函数创建时,Clojure REPL 才会对对象的内容保持沉默。(但是像 Array 这样的内置构造函数似乎是个异常(exception))

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(至少是 Chromium 和 Firefox)确实会打印出这些对象的内容。 Node.js REPL 也可以。函数 js->clj 在这里没有帮助。如上面的代码所示,Clojure REPL 甚至打印未转换的 JavaScript 对象的内容。

直到现在我还找不到一种方法来检查这些对象的整体内容。我只能单独访问属性。例如:

cljs.user=> (.-a (A.))
"x"

有没有人遇到过同样的问题,甚至可能找到了解决方案或解释?

最佳答案

问题是从 #object[Url "..."] 转换为 #object[Object "..."]最后我用这个很好的旧辅助函数做到了。

(defn clone-js [jsobj]
(.parse js/JSON (.stringify js/JSON jsobj)))

如果有合适的解决方案,我将非常感激。

关于javascript - 通过 'new' 检查 ClojureScript REPL 中构造的 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34721251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com