将JavaScript转换为ClojureScript

3
我会尝试将以下行转换为Cljs:

我正在尝试将以下行转换为Cljs:

var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { enableHighAccuracy:  true });

以下是对应的地图:

{ enableHighAccuracy:  true }

在ClojureScript中如何使用?enableHighAccuracy是一个符号吗?
1个回答

4
如果您正在使用与库的交互(例如,您的情况下是地理位置),并且它期望一个 JavaScript 对象,则需要传递一个标准的 JavaScript 对象,而不是 Clojure 映射。您可以在 ClojureScript 中使用没有参数的 js-obj 函数构造这些对象。这将返回一个没有字段的空 JavaScript 对象;然后您可以使用 aset 函数添加字段。因此,您的代码应该类似于:
(let [arg (js-obj)]
  (aset arg "enableHighAccuracy" true)
  (.watchPosition (.geolocation navigator) on-success on-error arg))

如果您经常需要进行这样的操作,可以很容易地编写一个实用函数,使用您喜欢的默认设置将ClojureScript映射转换为JavaScript对象; 您可以在此代码片段中找到此类功能的示例:https://gist.github.com/1658431

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接