诚然,这很奇怪,但请耐心等待:
我正在使用 Dart 的 js-interop 包,这样我就可以从 Dart 调用 JavaScript。
我必须使用的系统具有通过特定全局 JavaScript 对象的通信路径——该对象被插入到 JavaScript 上下文中作为调用本机代码的一种方式,但它不是真正的 JavaScript 对象;这有点hacky。
我不能直接为这个对象创建一个 Dart 代理,因为代理代码依赖于这个 hacky 对象不存在的原型链的某些构造函数和方面。具体来说,dart2js 生成的 JsObject_JsObject 函数会尝试调用“constr.bind.apply”,其中 constr 是 JS 对象的构造函数。这个对象没有 .bind 属性,因为它没有从其他东西正确继承,并且我所有添加/修复原型链的尝试到目前为止都失败了。
如果我能解决这个问题,那就太好了。但我的另一个选择是代理一个代理 - 制作一个真正的 Javascript 对象来包装和代理古怪的 hacky-native 对象,然后是一个 Dart 代理。
我很好奇制作 JS 代理的最干净的方法是什么——我想从 Dart 调用各种函数,使用不同数量的参数,并让调用干净地传递到本机对象,而不必经常维护我的 JS 代理,确保添加到本机对象的任何函数都添加到代理中。
有没有人有任何伟大/令人毛骨悚然的想法来制作这个代理白痴,以便它不需要大量维护,而只是自动将调用重定向到本机对象?