Javascript JsFunction.apply不';当JsObject.callMethod工作时不工作(dart)

Javascript JsFunction.apply不';当JsObject.callMethod工作时不工作(dart),javascript,dart,dart-js-interop,Javascript,Dart,Dart Js Interop,我经常遇到这样的情况,JsFunction.apply不像我期望的那样工作。考虑这个例子: import "dart:js"; import "dart:html"; void main() { var div = querySelector('div'); var span = new SpanElement()..text = "hello world"; var js = new JsObject.fromBrowserObject(div); js["appendChi

我经常遇到这样的情况,JsFunction.apply不像我期望的那样工作。考虑这个例子:

import "dart:js";
import "dart:html";

void main() {
  var div = querySelector('div');
  var span = new SpanElement()..text = "hello world";
  var js = new JsObject.fromBrowserObject(div);
  js["appendChild"].apply([span]);

  // this one does work:
  // js.callMethod("appendChild", [span]);
}
我希望
js[“appendChild”].apply([span])
的工作原理与js.callMethod(“appendChild”[span])完全相同

另请参见此演示:

它与
js[“appendChild”]一起使用

如果您不提供
thisArg
,就像您调用
null
作为第一个参数一样

因此,您的Dart调用与js相同:

var div=document.querySelector('div');
var span=document.createElement(“span”);
span.innerText=“你好世界”;
div[“appendChild”]。apply(null,[span]);
执行上述js代码会导致
类型错误:非法调用
。要使其工作,您必须使用div[“appendChild”]。apply(div,[span])

所以这不是Dart问题,而是js问题