Проверка доступности метода или свойства в оверлеях GWT Elemental2
Хотя свойство или метод могут быть предоставлены в оверлее 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 ответ
Я нашел этот ответ в старой закрытой проблеме для Elemental2:
Js.asPropertyMap(object).has("key");