如何从 dart 调用名为 `call` 的 JavaScript 函数

How to call a JavaScript function named `call` from dart

有什么方法可以从 Dart 调用名为 call() 的 JavaScript 函数(在嵌套对象中),还是我必须等待 Dart 2.0 才能对 [=13 进行特殊处理=] 可能会被删除?

我有一个像这样的 JS 代理:

@JS()
class SomethingFancy {
  external String call();
}

但是由于call()可以将对象变成函数,所以无法访问JS对象的函数

如果可以的话,我会更改 Dart 中方法的名称,但 package:js 不支持:

/// By default the dart name is used. It is not valid to specify a custom     
/// [name] for class instance members.

我得到的错误是:

Uncaught Error: NoSuchMethodError: method not found: 'call[=17=]' (J.getSomethingFancy$x(...).call[=17=] is not a function)

如果该函数不存在,错误将如下所示:

Uncaught Error: NoSuchMethodError: method not found: 'callMe' (receiver.callMe is not a function)

同一对象上的其他函数工作正常。

您可以在 call 前加上 JS$:

@JS()
class SomethingFancy {
  external String JS$call();
}

JS$可以作为前缀,允许访问与dart关键字冲突的JS名称。