что альтернатива для в в даржах? - PullRequest
0 голосов
/ 24 июня 2019

Я ищу альтернативу javascript for in в дартс: JS?

например:

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

Я использовал оператор is, но он выдает ошибку в Safari, так как addEventListener не существует в событии.

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

1 Ответ

3 голосов
/ 24 июня 2019

Проверка того, поддерживает ли объект определенный метод, - это не то, что вы делаете в 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(...);
}
...