我希望能够像哈希映射一样使用(js-obj)
以便
(def a (js* "{'a': 1, 'b':2}"))
(a :a)
;=> 1
我试过这样做:
(extend-type object
IFn
(-invoke
([o k] (aget o (strkey k))))
但它不起作用。
答案 0 :(得分:1)
您可以使用reify
。请注意,这意味着您将无法直接访问属性:
(defn convert [obj]
(reify
IFn
(-invoke [obj]
([o k] (aget o (strkey k))))))
当然,您可以编写协议,以便在需要时可以访问原始对象。