我有一个代码库,它大量使用嵌套表单的get和get-in.我希望能够使用本机 javascript对象,没有(很多)代码重写. js cljs.user.o = {foo: 42} // in js consolecljs.user (get o "foo") ; = 42 ; in cljs console 由于我只
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)))
它似乎有效,但它以一种奇怪的方式打破了很多东西.
你正在修改Object原型,你不想这样做,以下是更好的:(extend-protocol ILookup object (-lookup [m k] (aget m k)) (-lookup [m k not-found] (or (aget m k) not-found)))