从 ClojureScript 调用 javascript 对象
calling javascript Object from ClojureScript
我想在 javascript 中实例化一个 class,将对象传递到我的 ClojureScript,并从 Clojure 访问它的属性和函数。当我只有 clojure.core 命名空间可供使用时,如何访问 test-obj 的功能和属性?
我有以下糟糕的破解解决方案。
Javascript:
class Test {
constructor (a,b) {
this.a = a;
this.b = b;
}
getA () {
return this.a;
}
}
window['createA'] = (a,b) => {
return new Test(a,b);
}
window['geta'] = (o) => {
return o.getA();
}
ClojureScript:
(defn myfn[]
(let [test-obj (.createTest js/window "x" 1)]
[:div (.geta js/window test-obj)]))
我相信常规的 JS 互操作应该工作得很好:)
向外界公开你的class:
window["Test"] = Test
然后,来自 cljs:
(let [x (js/Test.)]
(prn (.getA x)))
我想在 javascript 中实例化一个 class,将对象传递到我的 ClojureScript,并从 Clojure 访问它的属性和函数。当我只有 clojure.core 命名空间可供使用时,如何访问 test-obj 的功能和属性?
我有以下糟糕的破解解决方案。
Javascript:
class Test {
constructor (a,b) {
this.a = a;
this.b = b;
}
getA () {
return this.a;
}
}
window['createA'] = (a,b) => {
return new Test(a,b);
}
window['geta'] = (o) => {
return o.getA();
}
ClojureScript:
(defn myfn[]
(let [test-obj (.createTest js/window "x" 1)]
[:div (.geta js/window test-obj)]))
我相信常规的 JS 互操作应该工作得很好:)
向外界公开你的class:
window["Test"] = Test
然后,来自 cljs:
(let [x (js/Test.)]
(prn (.getA x)))