2012-09-07 64 views
8

我將一些ClojureScript代碼與一個需要回調函數的JS庫調用集成在一起。 JS庫使用JavsScript的「this」關鍵字將數據傳遞給回調函數。你如何從clojurescript引用JavaScript的這個關鍵字?

我可以使用(js *「this」)來使用它。例如:

(libraryCall (fn [] (.log console (js* "this")))) 

有沒有辦法從ClojureScript獲取「this」上下文而不使用js *?

回答

13

使用內置的this-as宏。它採用名稱和正文,並使用綁定到JavaScript this的名稱來評估正文。

例如

(libraryCall (fn [] (this-as my-this (.log js/console my-this)))) 

偉大的問題......不得不深入編譯器代碼找到它,它根本沒有很好的廣告。

我會將它添加到書中。

+0

很好,謝謝! –