检查 ArrayBufferView 的实例吗?

2024-02-28

背景

经过一些研究,我发现,尽管ArrayBufferView最初并未公开(通过 [NoInterfaceObject]),由于我所描述的用例,人们似乎广泛同意它应该公开。

  • Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=796327
  • Chrome https://code.google.com/p/chromium/issues/detail?id=60449
  • Safari https://bugs.webkit.org/show_bug.cgi?id=105605

最初的协议是揭露ArrayBufferView上的构造函数DOMWindow命名空间,它在 Safari(并且在 6.1.1 中仍然有效)和 Chrome 中实现,但当时从 Chrome 中提取 http://code.google.com/p/chromium/issues/detail?id=247561支持静态方法ArrayBuffer.isView().

与此同时,Mozilla(仍然)谈论实施 https://bugzilla.mozilla.org/show_bug.cgi?id=896105 ArrayBuffer.isView().

简单来说:

  • Safari 暴露了ArrayBufferView构造函数

  • Chrome 有ArrayBuffer.isView()

  • 火狐什么都没有

  • IE - 我还没有接近......

Question

那么,我的问题。检查对象是否是 ArrayBufferView 实例的最简洁方法是什么?


我会使用:

function isAbv(value) {
    return value && value.buffer instanceof ArrayBuffer && value.byteLength !== undefined;
}

or:

var ArrayBufferView = Object.getPrototypeOf(Object.getPrototypeOf(new Uint8Array)).constructor;
function isAbv(value) {
    return value instanceof ArrayBufferView;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 ArrayBufferView 的实例吗? 的相关文章

随机推荐