我正在尝试为现有的JavaScript系统添加一些功能。然后再次从JavaScript中使用(而不是在ClojureScript命名空间中)。也许这是不可能的?
以下是我想要做的简化:
// JavaScript
String.prototype.foo = function() {
return "bar";
}
# CoffeeScript
String::foo = ->
"bar"
我希望能够在上面运行我的脚本,然后从代码中的其他地方调用它。
我已尝试与extend-type
和defprotocol
以及export
混淆,但似乎没有任何东西暴露我的foo功能。
这可能是一个设计决定而ClojureScript在这里不适合我,但我只是想确保我没有忽略某些东西。
答案 0 :(得分:11)
可以这样做:
(set! (.-foo (.-prototype js/String)) (fn [] "bar"))
或者你可以使用..糖:
(set! (.. js/String -prototype -foo) (fn [] "bar"))