ClojureScript:如何通过原型向JS对象添加方法?

Eve*_*man 5 clojure clojurescript

我正在尝试为现有的JavaScript系统添加一些功能.然后再次从JavaScript中使用(而不是在ClojureScript命名空间中).也许这是不可能的?

这是我想要做的简化:

// JavaScript
String.prototype.foo = function() {
  return "bar";
}

# CoffeeScript
String::foo = ->
  "bar"
Run Code Online (Sandbox Code Playgroud)

我希望能够在上面运行我的脚本,然后从代码中的其他地方调用它.

我已经试过搞乱extend-typedefprotocol,沿export,但似乎没有什么暴露我foo的功能.

这可能是一个设计决定,ClojureScript在这里不适合我,但我只是想确保我没有忽略某些东西.

dno*_*len 11

可以这样做:

(set! (.-foo (.-prototype js/String)) (fn [] "bar"))
Run Code Online (Sandbox Code Playgroud)

或者你可以使用..糖:

(set! (.. js/String -prototype -foo) (fn [] "bar"))
Run Code Online (Sandbox Code Playgroud)