棘手的ClojureScript语法

Zau*_*bov 2 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))
Run Code Online (Sandbox Code Playgroud)

据我所知,这里声明了一个私有函数,它接受一个widget参数.local-scope变量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来自哪里,破折号意味着什么?

提前致谢.

Ank*_*kur 8

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

(. input-container -gEditableHandler)被访问属性gEditableHandlerinput-container,本-前gEditableHandler向编译器指示它是一个属性访问,而不是一个方法调用(如方法调用也有同样的语法即(. obj method))