gpt4 book ai didi

Clojurescript `.-name` 约定

转载 作者:行者123 更新时间:2023-12-02 09:29:44 27 4
gpt4 key购买 nike

我一直在尝试学习 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)))))

.- 试图表明什么?

最佳答案

这些正在检索 native JavaScript 属性。因此,(.-length str) 将编译为 JavaScript str.length

将此与 ClojureScript (.length str) 进行对比,后者将编译为方法调用 str.length() ——这是一个相当不同的事情。


在给定的 om 情况下,代码按顺序执行以下操作:

  • 调用get-node,并获取其结果
  • 获取该结果的value属性
  • 使用传递的值调用函数 parse-contact

这是因为线程宏 -> 将每个阶段的结果替换为下一个阶段的第一个参数 - 使该代码等效于 (parse-contact (.-值(om/get-node 所有者“new-contact”)))

关于Clojurescript `.-name` 约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com