2012-09-07 5 views
8

Sto integrando del codice ClojureScript con una chiamata alla libreria JS che accetta una funzione di callback. La libreria JS trasferisce i dati al callback utilizzando la parola chiave "this" di JavsScript.Come si fa riferimento a javascript questa parola chiave da clojurescript?

Posso farlo funzionare usando (js * "questo"). Per esempio:

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

C'è un modo per arrivare al "questo" contesto da ClojureScript senza ricorrere a js *?

risposta

13

Utilizzare la macro integrata this-as. Prende un nome e un corpo e valuta il corpo con il nome associato a JavaScript this.

ad es.

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

Grande domanda ... ha dovuto scavare nel codice del compilatore per trovarlo, non è ben pubblicizzato a tutti.

Lo aggiungerò al libro.

+0

Funziona alla grande, grazie! –