在将Dart函数传递给Javascript代码时,当前的约定是使用package:js中的allowInterop() (假设如此)。这工作得很好,但它创建了一个闭包,这是期望构造函数的Javascript代码所不允许的。
我做了一些调查,但得出了一个死胡同here
external DART_CLOSURE_TO_JS(Function function);这是怎么回事?它是开源的吗?
是否可以将Dart函数转换为package:js或dart:js中的非闭包JS函数?若否,原因为何?
发布于 2018-10-31 02:47:10
Dart函数不能作为JS构造函数工作,因为它没有设置正确的原型。此外,使用自定义元素还有另一个困难:它必须正确地委托给DOM元素构造函数。
通常的方法是使用ES6类。我创建了一个使用JS来定义自定义元素类的示例。我想您可能已经看到了,但是为了以防万一,在这里链接它:Dart custom element interop demo。文件web/interop.js定义了自定义元素类。
如果使用Reflect.construct(),我认为ES5构造函数也可以工作。上周,我花了一些时间看看这是否有助于改进dart:html以使用自定义元素,但我认为这还不够。Dart需要一些更好的JS互操作功能。
同时,我的建议是在JS中定义自定义元素类,并使用互操作与Dart通信(反之亦然)。
https://stackoverflow.com/questions/53028672
复制相似问题