Javascript js->;clj(包括原型链中的属性)

Javascript js->;clj(包括原型链中的属性),javascript,clojure,clojurescript,Javascript,Clojure,Clojurescript,我需要将JavaScript对象转换为Clojure脚本映射 对于prototypeObject的JS对象,是JS->clj完成了这项工作。但是,如果原型是不同的,我将使用以下解决方法: (defn jsx->clj [o] (reduce (fn [m v] (assoc m (keyword v) (aget o v))) {} (.keys js/Object o))) 现在,这适用于大多数情况。但是:由于它使用Object.keys,因此生成的映射只包含对象自己的属性 现在

我需要将JavaScript对象转换为Clojure脚本映射

对于prototype
Object
的JS对象,是
JS->clj
完成了这项工作。但是,如果原型是不同的,我将使用以下解决方法:

(defn jsx->clj [o]
  (reduce (fn [m v] (assoc m (keyword v) (aget o v)))  {} (.keys js/Object o)))
现在,这适用于大多数情况。但是:由于它使用
Object.keys
,因此生成的映射只包含对象自己的属性

现在我需要转换对象的所有属性。意思是包括那些来自原型链的。在JavaScript中,这将通过(..In..)的
循环来完成。

那怎么能正确地翻译成ClojureScript呢


或者,一个更一般的问题,因为我对ClojureScript很陌生:不断地将JavaScript对象转换为Clojure结构是否正确?当然,我这样做是因为更好地融入了clojure宇宙。我只是觉得一直和aget和aset“混在一起”很烦人。另一方面,我必须说,我观察到自己花了很多时间在这些铸造问题上。嗯,我想这不是一个容易的问题,性能在这里也扮演着巨大的角色。无论如何,万一有人在这里为我提供了一些“路径”…

我可以问一下为什么需要复制对象、原型链和所有东西吗?也许你的问题可以通过重新定义这个问题来解决。我能问你为什么需要复制对象、原型链和所有的东西吗?也许你的问题可以通过重新思考这个问题来解决。