首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展ClojureScript中的协议以从原生js对象获取值

问扩展ClojureScript中的协议以从原生js对象获取值
EN

Stack Overflow用户
提问于 2013-06-03 18:15:05
回答 1查看 1.2K关注 0票数 5

我有一个代码库,它在嵌套表单中大量使用get和get-in。我也希望能够使用原生javascript对象,而不需要重写代码。

代码语言:javascript
复制
js> cljs.user.o = {foo: 42}  // in js console

cljs.user> (get o "foo") ; => 42 ; in cljs console

因为我只查询表单,而不修改它们,所以我认为实现get ( get-in所依赖的)就足够了。这是我的尝试,

代码语言:javascript
复制
(extend-protocol ILookup
  js/Object
    (-lookup [m k] (aget m k))
    (-lookup [m k not-found (or (aget m k) not-found)))

它似乎起作用了,但它以一种奇怪的方式破坏了很多东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-04 03:17:33

你正在修改对象原型,你不想这样做,下面是更好的方法:

代码语言:javascript
复制
(extend-protocol ILookup
  object
  (-lookup [m k] (aget m k))
  (-lookup [m k not-found] (or (aget m k) not-found)))
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16894465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档