13

コンストラクターをグローバル オブジェクトのプロパティとして公開する JavaScript ライブラリを使用しています。

JavaScript では、このようにコンストラクターを呼び出すことができます。

var thing = new Library.Thing();

ClojureScript でコンストラクターを呼び出すにはどうすればよいですか? これらのどれも機能しません。

; These all cause compiler errors
(new (.-Thing js/Library)) ; First arg to new must be a symbol
(new (.Thing js/Library))
(new .-Thing js/Library)
(new .Thing js/Library)
(new js/Library/Thing)     ; Invalid token: js/Library/Thing

; These all compile to different JS than I am looking for
((.-Thing js/Library).) ; Library.Thing.call(null, _SLASH_);
((.Thing js/Library).)  ; Library.Thing().call(null, _SLASH_);

js* を使えば問題なく動作しますが、それは不正行為ですよね?

(js* "new Library.Thing()")

別のオブジェクトのプロパティであるコンストラクター関数を呼び出す適切な方法は何ですか?

4

1 に答える 1