ClojureScript互操作

And*_*rea 13 interop clojure clojurescript

我试图找出如何在ClojureScript中访问Javascript对象属性.如果我提前知道该物业的名称,那很容易.让foo.bar我做的就是

(.-bar foo)
Run Code Online (Sandbox Code Playgroud)

有没有办法访问其名称仅在运行时已知的属性?我正在寻找相当于JS语法foo[dynamicBar]

sw1*_*1nn 19

您可以使用aget/aset访问仅在运行时已知的属性.

;; Use clj->js to convert clj(s) map to javascript.
;; Note the #js {:bar 100} reader literal indicating a js map.

cljs.user> (def foo (clj->js {:bar 100}))
#js {:bar 100}
cljs.user> (.-bar foo) 
100
cljs.user> (aget foo "bar")
100
cljs.user> (aset foo "baz" 200)
200
cljs.user> (.-baz foo) 
200
Run Code Online (Sandbox Code Playgroud)