5

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

这是我想要做的简化:

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

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

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

我试过弄乱extend-typeand defprotocol,以及export,但似乎没有任何东西暴露我的 foo 函数。

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

4

1 回答 1

11

可以这样做:

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

或者你可以使用 .. 糖:

(set! (.. js/String -prototype -foo) (fn [] "bar"))
于 2012-09-14T16:44:12.133 回答