Как вы ссылаетесь на это ключевое слово в 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))))

Отличный вопрос... пришлось копаться в коде компилятора, чтобы найти его, он не очень хорошо рекламируется.

Я добавлю это в книгу.

Другие вопросы по тегам