Aaron Iba
Aaron Iba

Reputation: 625

How do you reference javascript's this keyword from clojurescript?

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*?

Upvotes: 10

Views: 1578

Answers (1)

levand
levand

Reputation: 8500

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.

Upvotes: 20

Related Questions