我定义了一个列出类型的函数
(defn js-type [o]
(let [ty (type o)
ty (if (and ty (.-cljs$lang$type ty))
(.-cljs$lang$ctorStr ty)
(js/goog.typeOf o))]
ty))
使用
(js-type (keys {:a 1})) ;=> "cljs.core/KeySeq"
我想在 clojurescript 中有一个列出所有协议(protocol)的函数
(js-protocols (keys {:a 1})) ;=> [Object, IMeta, IWithMeta .... INext ]
KeySeq 的所有协议(protocol)都在这里:https://github.com/clojure/clojurescript/blob/master/src/cljs/cljs/core.cljs#L5881-L5932
最佳答案
这是运行时不存在的另一个反射工具。您可以通过查看 cljs.analyzer/namespaces 的内容或直接通过 ClojureScript 分析器/编译器来通过宏获取此信息。
关于clojure - 在clojurescript中,如何列出对象的所有协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20134649/