背景
经过一些研究,我发现,尽管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()
.
简单来说:
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(使用前将#替换为@)