Проверка доступности метода или свойства в оверлеях GWT Elemental2 - PullRequest
0 голосов
/ 05 сентября 2018

Хотя свойство или метод могут быть предоставлены в оверлее Elemental2, как вы можете проверить, действительно ли оно определено в базовом объекте JS?

Класс DomGlobal имеет метод hasOwnProperty(), который, кажется, делает то, что я хочу:

// WORKS
if (DomGlobal.hasOwnProperty("console")) {
    DomGlobal.console.log(object);
}

Но как я могу проверить существование методов на самом объекте console? Я хотел бы иметь возможность сделать что-то вроде этого:

// DOESN'T WORK
if (DomGlobal.console.hasOwnProperty("warn")) {
    DomGlobal.console.warn(object);
}

Не работает, потому что hasOwnProperty() не определен в оверлее console.

Что я должен делать вместо этого? Нужно ли мне определять свое собственное наложение или приведение к наложению, которое включает метод?

Это правильно?

Js.<JsObject>cast(DomGlobal.console).hasOwnProperty("warn")

Кажется, немного глотка. Существуют ли стандартные утилиты, позволяющие сделать это более лаконично, или я должен написать свою собственную?

1 Ответ

0 голосов
/ 05 сентября 2018

Я обнаружил этот ответ в старой закрытой проблеме для Elemental2:

Js.asPropertyMap(object).has("key");
...