检查 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");
虽然在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");