2013-11-22 43 views
2

我已經定義,列出類型的函數在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)) 

使用

(js-type (keys {:a 1})) ;=> "cljs.core/KeySeq" 

我想在clojurescript的功能,列出了所有的協議

(js-protocols (keys {:a 1})) ;=> [Object, IMeta, IWithMeta .... INext ] 

所有協議KeySeq在這裏:https://github.com/clojure/clojurescript/blob/master/src/cljs/cljs/core.cljs#L5881-L5932

回答

2

這是另一種在運行時不存在的反射設施。您可以通過查看cljs.analyzer/namespaces的內容或直接通過ClojureScript分析器/編譯器通過宏獲取此信息。

相關問題