Javascript JsFunction.apply不';当JsObject.callMethod工作时不工作(dart)
我经常遇到这样的情况,JsFunction.apply不像我期望的那样工作。考虑这个例子: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
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问题