5

既存の JavaScript システムにいくつかの機能を追加しようとしています。その後、(ClojureScript 名前空間内ではなく) JavaScript から再び使用されます。おそらくこれは不可能ですか?

これが私がやりたいことの単純化です:

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

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

上記のスクリプトを実行して、コードの他の場所から呼び出すことができるようにしたいと考えています。

extend-typedefprotocolをいじってみまし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 に答える