単純なjsオブジェクトをclojureオブジェクトに変えることはできますが、次のようなものです。
(-> "{a: 2, b: 3}" js* js->clj)
goog.events.BrowserEvent
次のようなハンドラー関数で、特定のオブジェクトを使用してそうすることができないようです。
(defn handle-click [e]
...
(-> e .-evt js->clj keys) ;; <-------------
...
count
関数は適用されますが、結果のオブジェクトはまたはfirst
のようなシーケンス関数に応答しませんaget
。Chromeのコンソールに表示されるエラーメッセージは次のとおりです。
Uncaught Error: No protocol
method ISeqable.-seq defined for type object: [object Object]
なぜこうなった?js->clj
すべてのオブジェクトで動作するべきではありませんか?
どうすればこれを修正できますか?
ありがとう!