我希望使用特定的JavaScript框架,需要扩展基类以在应用程序中使用它。
基本上,我想以惯用的ClojureScript方式执行以下操作。
class Foo extends Bar {
constructor() { super("data") }
method1(args) { /* do stuff */ }
}
我尝试过
(defn foo
[]
(reify
js/Bar
(constructor [this] (super this "data"))
(method1 [this args] )))
如果我从Object创建一个新类,那么这将起作用,但正如shadow-cljs
正确地抱怨的那样,“符号js/Bar不是协议”。此外,我不想添加方法,而是创建一个子类,继承某些方法并重载其他方法。
我考虑使用proxy
,但“core/proxy未定义”。
当然,我可以创建一个Bar
实例并set!
新方法,但这感觉就像放弃并使用劣质语言。
HTMLElement
)时会出现一些问题,这需要以某种方式使用Reflect
进行处理,但我记不清细节了。 - Thomas Heller:output-feature-set:es6
来避免Closure编译器错误“尚未实现对'super属性分配'的ES6转换”而导致的库。我将进一步研究使用Reflect
,看看它是否可以在这里有所帮助-非常感谢您的指针和快速回复。最坏的情况下,JS存根文件仍然有效,我只是希望我们不会开始看到ES6生态系统把我们落在后面! - Greg