为什么NodeList / HtmlCollection不支持序列化?

19

作为一个新手,对于Clojurescript我发现每个Clojurescript项目都会有类似这样的代码片段:

(extend-type js/NodeList
  ISeqable
  (-seq [array] (array-seq array 0)))

为什么这部分不是核心库的一部分?


1
正如@Joaquin所评论的那样,这是一个特定于平台的适配器问题。您是否熟悉extend-type的含义http://clojuredocs.org/clojure_core/clojure.core/extend-type? - tangrammer
1
@expez:我很惊讶NodeList和HTMLCollection不能自动地被标准Clojurescript迭代器使用。每个学习Clojurescript的人都不应该因为这个而绊倒,寻找答案并重新实现样板解决方案代码。 - devdanke
3个回答

13

你必须意识到ClojureScript是将语言编译成JavaScript,而不仅仅是浏览器JavaScript的编译器。你还可以在其他平台上使用它,比如Node.js或者QT库,这些平台上并不存在像NodeList这样的东西(因为这是Dom api的一部分,而不是标准语言)。


3
如果您想从NodeList创建序列,可以使用array-seq函数。
(array-seq (js/document.querySelectorAll "div"))

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接