在clojurescript中,如何列出对象的所有协议?
我已经定义了一个列出类型的函数在clojurescript中,如何列出对象的所有协议?,clojure,clojurescript,Clojure,Clojurescript,我已经定义了一个列出类型的函数 (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)) 用法 我想在clojurescript中有一个函数,列出所有协议 (js-protocols (keys {:a 1})) ;=> [
(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))
用法
我想在clojurescript中有一个函数,列出所有协议
(js-protocols (keys {:a 1})) ;=> [Object, IMeta, IWithMeta .... INext ]
KeySeq的所有协议都在这里:这是另一个在运行时不存在的反射功能。通过查看
cljs.analyzer/namespaces
的内容,或者直接通过ClojureScript analyzer/compiler,可以通过宏获取此信息
(js-protocols (keys {:a 1})) ;=> [Object, IMeta, IWithMeta .... INext ]