在 darjs 中 for in 的替代方法是什么?

what is alternative of for in in darjs?

我正在 dart:js?

中寻找 javascript for in 的替代方案

例如:

if('addEventListener' in event) {
event.addEventListener(change);
}

我使用了 is 运算符,但它在 Safari 中抛出错误,因为事件中不存在 addEventListener。

if(event.addEventListener is Function) {
event.addEventListener(change);
}

检查对象是否支持特定方法不是您在 Dart 中做的事情。您应该检查该对象是否实现了具有该方法的接口。

在本例中,您可能需要:

if (event is EventTarget) {
  event.addEventListener("change", change);
}

如果您认为该对象可能支持该功能,但您实际上并不知道它从哪个接口获取该功能,那么您可以在这里尝试使用动态查找,但您需要捕获如果该函数不存在,您得到的错误。

dynamic e = event;  // if it isn't dynamic already.
Object addEventListener;
try {
  addEventListener = e.addEventListener;
} on Error {
  // ignore.
}
if (addEventListener is Function) {
  addEventListener(...);
}