2012-09-07 8 views
8

Estoy integrando algún código ClojureScript con una llamada de biblioteca JS que toma una función de devolución de llamada. La biblioteca JS pasa datos a la devolución de llamada utilizando la palabra clave "this" de JavsScript.¿Cómo referencia la palabra clave javascript desde clojurescript?

Puedo hacer que funcione usando (js * "this"). Por ejemplo:

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

¿Hay una manera de conseguir en el "este" contexto de ClojureScript sin recurrir a js *?

Respuesta

13

Utilice la macro incorporada this-as. Toma un nombre y un cuerpo, y evalúa el cuerpo con el nombre vinculado a JavaScript this.

p. Ej.

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

Una gran pregunta ... tuve que profundizar en el código del compilador para encontrarlo, no está bien anunciado en absoluto.

Lo añadiré al libro.

+0

¡Funciona muy bien, gracias! –

Cuestiones relacionadas