问题
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*?
回答1:
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.
来源:https://stackoverflow.com/questions/12310950/how-do-you-reference-javascripts-this-keyword-from-clojurescript