2012-09-07 28 views
8

Tôi đang tích hợp một số mã ClojureScript với một cuộc gọi thư viện JS có chức năng gọi lại. Thư viện JS chuyển dữ liệu đến cuộc gọi lại bằng cách sử dụng từ khóa "này" của JavsScript.Làm cách nào để bạn tham khảo từ khóa này của javascript từ clojurescript?

Tôi có thể làm cho nó hoạt động bằng cách sử dụng (js * "này"). Ví dụ:

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

Có cách nào để xem ngữ cảnh "này" từ ClojureScript mà không cần đến js * không?

Trả lời

13

Sử dụng macro được xây dựng trong this-as. Nó có tên và một cơ thể, và đánh giá cơ thể với tên được gắn với JavaScript this.

ví dụ:

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

Câu hỏi hay ... phải tìm hiểu mã trình biên dịch để tìm nó, nó hoàn toàn không được quảng cáo.

Tôi sẽ thêm nó vào sách.

+0

Hoạt động tuyệt vời, cảm ơn bạn! –

Các vấn đề liên quan