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

时间:2012-09-14 07:31:49

标签: clojure clojurescript

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

以下是我想要做的简化:

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

# CoffeeScript
String::foo = ->
  "bar"

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

我已尝试与extend-typedefprotocol以及export混淆,但似乎没有任何东西暴露我的foo功能。

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

1 个答案:

答案 0 :(得分:11)

可以这样做:

(set! (.-foo (.-prototype js/String)) (fn [] "bar"))

或者你可以使用..糖:

(set! (.. js/String -prototype -foo) (fn [] "bar"))