Чтобы предоставить вам еще одну опцию, вы можете использовать goog.object
для взаимодействия с JavaScript объектами в ClojureScript. Будет работать следующий код:
(require 'goog.object)
(def a #js {:foo "bar"})
;; Modify `a` inline
(goog.object/set a "newprop" 10) ;; In JS, this is equivalent to a.newprop = 10
Если вы хотите сделать поверхностную копию a
и изменить это значение, вы можете использовать clone
(который будет вести себя как оператор распространения).
;; Shallow copy a
(def b (goog.object/clone a))
;; Modify the cloned object
(goog.object/set b "newprop" 10)
Существует удобная библиотека, которую вы можете использовать для взаимодействия с JavaScript объектами, если вам нужно делать это часто: https://github.com/binaryage/cljs-oops