检查 GWT Elemental2 覆盖中方法或 属性 的可用性

Checking availability of a method or property in GWT Elemental2 overlays

虽然在Elemental2 overlay中可能提供了属性或方法,但是如何测试它是否真的在底层JS对象中定义?

DomGlobal class 有一个 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")

好像有点啰嗦。是否有标准实用程序可以更简洁地执行此操作,还是我必须自己编写?

我在 Elemental2 的旧 closed issue 中发现了这个答案:

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