(defn clj->js "Recursively transforms ClojureScript maps into Javascript objects, other ClojureScript colls into JavaScript arrays, and ClojureScript keywords into JavaScript strings." [x] (cond (string? x) x (keyword? x) (name x) (map? x) (.-strobj (reduce (fn [m [k v]] (assoc m (clj->js k) (clj->js v))) {} x)) (coll? x) (apply array (map clj->js x)) :else x))