我正在寻找dart:js中的JavaScript for in
的替代方案?
例如:
if('addEventListener' in event) {
event.addEventListener(change);
}
我使用了is
运算符,但由于事件中不存在addEventListener,它在Safari中引发了错误。
if(event.addEventListener is Function) {
event.addEventListener(change);
}
答案 0 :(得分:3)
在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(...);
}