2

谁能帮助我理解这段代码中发生了什么:

(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参数。local-scope 变量input-container是一个节点(实际上它是一个dommy.template节点),它是一个 HTML<input type="text" class="editable-edit-mode">元素。

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

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

提前致谢。

4

1 回答 1

8

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

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

于 2013-06-05T10:26:50.967 回答