10

I'm integrating some ClojureScript code with a JS library call that takes a callback function. The JS library passes data to the callback using JavsScript's "this" keyword.

I can get it to work using (js* "this"). For example:

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

Is there a way to get at the "this" context from ClojureScript without resorting to js*?

Aaron Iba
  • 625
  • 5
  • 14

1 Answers1

20

Use the built-in this-as macro. It takes a name and a body, and evaluates the body with the name bound to JavaScript this.

e.g.

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

Great question... had to dig into the compiler code to find it, it's not well advertised at all.

I'll add it to the book.

levand
  • 8,440
  • 3
  • 41
  • 54