Clojurescript:表达中的两个点

时间:2014-11-20 23:08:36

标签: clojurescript

我正在使用Om,但我并未完全理解以下表达式:

 (.. e -target -checked)

这里,“e”是一个javascript事件,“-target -checked”是一种访问属性的方法,如果我理解的话。但是一开始的两个点呢?

1 个答案:

答案 0 :(得分:26)

这是clojurescript互操作的形式之一。

最基本的是

(.method object) ; Equivalent to object.method()
(.-property object) ; Equivalent to object[property]

为了访问多个嵌套属性,..运算符有一个快捷方式,您可以这样做:

(.. object -property -property method)
(.. object -property -property -property)

而不是:

(.method (.-property (.-property object)))
(.-property (.-property (.-property object)))

代码导致更清晰,更易读的表达。正如您所看到的,并行是表单与普通互操作相同但没有点,因此属性访问变为-prop,方法调用变为method(无点)。

上面的表格相当于这个JS形式:

object[property][property][method]()
object[property][property][property]

阅读这篇好文章,了解有关clojurescript的javascript互操作表单的更多信息:http://www.spacjer.com/blog/2014/09/12/clojurescript-javascript-interop/