我有一个代码库,它大量使用get
和get-in
用于嵌套表单。我也希望能够使用本机 javascript 对象,而无需(大量)代码重写。
js> cljs.user.o = {foo: 42} // in js console
cljs.user> (get o "foo") ; => 42 ; in cljs console
由于我只查询表单,但不修改它们,我认为它足以实现get
(get-in
依赖于)。这是我的尝试,
(extend-protocol ILookup
js/Object
(-lookup [m k] (aget m k))
(-lookup [m k not-found (or (aget m k) not-found)))
它似乎有效,但它以一种奇怪的方式破坏了很多东西。