当前位置:  开发笔记 > 编程语言 > 正文

Clojurescript添加事件监听器

如何解决《Clojurescript添加事件监听器》经验,为你挑选了1个好方法。



1> Joaquin..:

.addEventListener

因此,这显然是一个过程调用,但这是通用的。就像Clojurescript拿走了对象内部的所有内容,将其取出来,然后用它在“对象”上调用该方法。只要该“对象”具有“ .addEventListener”属性,它将调用此属性。那是在做什么吗?为什么不使用关键字呢?像(:addEventListener domElement)在我看来更合乎逻辑。

您关于此工作原理的心理模型通常很好。编译时的作用是将函数名称作为第一个参数上的方法运行。

(.method obj ...args) 得到转化为 obj.method(...args)

这种类型的互操作来自于母语Clojure。

关于为什么我们有一个明确的版本来调用不是Clojure惯用的函数,我认为其思想是要清楚区分具有Clojure语义的本机Clojure代码(不可变性,对CLJ数据结构友好等)与什么是互操作的主机环境(可变,对CLJ数据结构不友好等)。

在我看来,鉴于CLJS和宿主平台的语义有何不同,最好在这两者之间有明确的区分。对我来说,在这种情况下,明确性比隐性更好(很容易看出代码是什么,CLJS中的JS代码以及纯CLJS是什么)。

js/window

这是什么?是名称空间还是对象?它们是一样的吗?

两者都js/在访问命名空间js,这是CLJS放置JS命名空间的位置(因为只有一个并且是全局的)。window只是window从js名称空间获取变量。

这与在CLJS中访问其他命名空间中的变量的方式没有什么不同。如果你(def a 1)进去(ns cljs.test)再跑cljs.test/a,那会给你的1。相同的形式,ns/something-in-that-ns

"DOMContentLoaded" 一个字符串,很熟悉。

\ o /

handler

也很熟悉,但是有这个概念吗?不是说我真的会想念这个。

不确定thishandlerdomready就像在JS中一样,它只是作为参数传递的高阶函数:function domready (onReady) { window.addEventListener("DOMContentLoaded", onReady) }


我希望这可以帮助,如果你想尝试一下现场,了解更多一些,也许访问与JS说话就潜入ClojureScript教程,也许这个检查的LT-cljs教程的部分。

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有