Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ClojureScript:如何通过prototype向JS对象添加方法?_Clojure_Clojurescript - Fatal编程技术网

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

ClojureScript:如何通过prototype向JS对象添加方法?,clojure,clojurescript,Clojure,Clojurescript,我正在尝试向现有JavaScript系统添加一些功能。然后再次从JavaScript中使用(而不是在ClojureScript命名空间中)。也许这是不可能的 以下是我想做的简化: // JavaScript String.prototype.foo = function() { return "bar"; } # CoffeeScript String::foo = -> "bar" 我希望能够运行上面的脚本,然后从代码中的其他地方调用它 我尝试过处理extend type和d

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

以下是我想做的简化:

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

# CoffeeScript
String::foo = ->
  "bar"
我希望能够运行上面的脚本,然后从代码中的其他地方调用它

我尝试过处理
extend type
defprotocol
,以及
export
,但似乎没有任何东西暴露我的foo函数


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

可以这样做:

(set! (.-foo (.-prototype js/String)) (fn [] "bar"))
或者你可以用。。糖:

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

测试和工作。要是在某个地方的文档中就好了。:)是的,有人需要为常见的JavaScript互操作表单创建一个ClojureScript页面。你能解释一下其中的一些功能吗?。令人困惑。这会让你脱离名称空间吗?不,这只是深度属性访问的糖。我遇到了一些有用的互操作和通用cljs表单。