Bre*_*dly 2 clojure clojurescript
我一直在努力学习ClojureScript并偶然发现了一些非常神秘的函数名称.
例如:
(.-length str)
来自om文档:
(defn add-contact [data owner]
(let [new-contact (-> (om/get-node owner "new-contact")
.-value ;;What is this?
parse-contact)]
(when new-contact
(om/transact! data :contacts #(conj % new-contact)))))
Run Code Online (Sandbox Code Playgroud)
那是什么意思.-?
这些是检索本机JavaScript属性.因此,(.-length str)将编译到JavaScript str.length.
将此与ClojureScript进行对比(.length str),后者将编译为方法调用str.length()- 这是一个相当不同的事情.
在om给定的情况下,代码按顺序执行以下操作:
get-node,并取得结果value取得那个结果的财产parse-contact传递具有该值的函数.这是因为线程宏->将每个阶段的结果替换为下一个阶段的第一个参数 - 使该代码等效于(parse-contact (.-value (om/get-node owner "new-contact"))).