Clojurescript:表达中的两个点

Tho*_*C__ 12 clojurescript

我正在使用Om,我没有完全理解以下表达式:

 (.. e -target -checked)
Run Code Online (Sandbox Code Playgroud)

这里,"e"是一个javascript事件,如果我理解的话,"-target -checked"是一种访问属性的方法.但是一开始的两个点怎么样?

Joa*_*uin 29

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

最基本的是

(.method object) ; Equivalent to object.method()
(.-property object) ; Equivalent to object[property]
Run Code Online (Sandbox Code Playgroud)

为了访问多个嵌套属性,..操作符有一个快捷方式,以便您可以执行以下操作:

(.. object -property -property method)
(.. object -property -property -property)
Run Code Online (Sandbox Code Playgroud)

代替:

(.method (.-property (.-property object)))
(.-property (.-property (.-property object)))
Run Code Online (Sandbox Code Playgroud)

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

上面的那些表单等同于这个JS表单:

object[property][property][method]()
object[property][property][property]
Run Code Online (Sandbox Code Playgroud)

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