Как вы ссылаетесь на это ключевое слово в JavaScript из clojurescript?
Я интегрирую некоторый код ClojureScript с библиотечным вызовом JS, который принимает функцию обратного вызова. Библиотека JS передает данные в функцию обратного вызова, используя ключевое слово this в JavsScript.
Я могу заставить его работать, используя (js* "this"). Например:
(libraryCall (fn [] (.log console (js* "this"))))
Есть ли способ получить контекст "this" из ClojureScript, не прибегая к js*?
1 ответ
Решение
Используйте встроенный this-as
макро. Он принимает имя и тело и вычисляет тело с именем, связанным с JavaScript this
,
например
(libraryCall (fn [] (this-as my-this (.log js/console my-this))))
Отличный вопрос... пришлось копаться в коде компилятора, чтобы найти его, он не очень хорошо рекламируется.
Я добавлю это в книгу.