Instantiate namespaced javascript class

[亡魂溺海] 提交于 2019-12-22 14:02:03

问题


I want to use google maps api v3, and it needs me to instantiate google.maps.LatLng. Using clojurescript this is what I do:

(ns foocljs.core)

(LatLng. (.-maps js/google) 100 100)

I got an error undefined is not a function, this is the culprit:

new foocljs.core.LatLng(foocljs.core.google.maps, // ... another args

I'm guessing this is because the compiler think that LatLng. is clojure namespaced class. How to deal with this? Thanks.


回答1:


Using js/a.b.c.d is a bad practice and is likely to break in future versions of the compiler (because it is not a clojure compatible version of interop from what I know)

The good way would be:

(def LatLng (.. js/google -maps -LatLng))

(LatLng. 100 100)



回答2:


Silly me, I can just do this:

(js/google.maps.LatLng. 100 100)


来源:https://stackoverflow.com/questions/23651607/instantiate-namespaced-javascript-class

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!