棘手的ClojureScript语法

时间:2013-06-05 09:52:57

标签: clojure clojurescript

任何人都可以帮助我理解,这段代码中发生了什么:

(defn- make-edit-mode-container [widget]
  (let [input-container (template/node [:input.editable-edit-mode {:type "text"}])
        ghandler (goog.events.KeyHandler. input-container)]
      (set! (. input-container -gEditableHandler) ghandler)
  ;; ...
  ;; ...
  input-container))

据我所知,这里声明了一个私有函数,它接受widget参数。局部范围变量input-container是一个节点(实际上它是dommy.template节点),它是一个HTML <input type="text" class="editable-edit-mode">元素。

我无法理解的是(goog.events.KeyHandler. input-container)(例如,goog.events.Keyhandler末尾的点是什么)。

因此,AFAIU (. input-container -gEditableHandler)是会员访问权限,但是-gEditableHandler来自哪里,破折号是什么意思?

提前致谢。

1 个答案:

答案 0 :(得分:8)

(goog.events.KeyHandler. input-container)正在调用KeyHandler作为构造函数,因此它等于这个js代码:new goog.events.KeyHandler(input-container);

(. input-container -gEditableHandler)正在访问gEditableHandler的属性input-container, - gEditableHandler之前 - 向编译器指示它是属性访问而不是方法调用(作为方法)调用也具有相同的语法,即(. obj method)