我正在使用一个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()")
如何正确调用另一个对象中的构造函数属性?
(let [Thing (.-Thing js/Library)] (new Thing))
和(let [Thing (.-Thing js/Library)] (Thing.))
都可以正常工作。你关于脚本直接包含在文档中的说法是正确的。 - Josh Headapohl(defn -log [message] (.log js/console message) ) (-log. "Hello Josh")
- tangrammer