• JavaScript 互操作

    JavaScript 互操作

    调用宿主语言代码最直接的办法就是通过 interop.
    JavaScript 的全局变量可以通过 js 命名空间访问.
    对象的方法调用可以写成:

    1. (.log js/console "demo") ; console.log('demo')

    访问对象的属性需要添加连字符:

    1. (.-name obj) ; obj.name

    对象的实例化可以用 cljs 写, 注意结尾有点号:

    1. (js/Date.) ; new Date()

    当然用 new 也不是不可以:

    1. (new js/Date) ; new Date()

    在一般用到 interop 比较局限. 但有时会用到复杂对象.
    复合数据结构直接转换通过 clj->js js->clj 两个函数进行.

    需要复杂的数据结构还有一些复杂的操作, 可以看这篇文章:

    http://www.spacjer.com/blog/2014/09/12/clojurescript-javascript-interop/

    以及这个视频:

    https://lambdaisland.com/episodes/clojurescript-interop