jam*_*mes 9 javascript instanceof typedarray arraybuffer
通过一些研究我发现,虽然ArrayBufferView最初没有公开(通过[NoInterfaceObject]),但由于我描述的用例,似乎应该有广泛的一致意见.
最初的协议是ArrayBufferView在DOMWindow命名空间上公开构造函数,该命名空间在Safari(并且仍然在6.1.1中)和Chrome中实现,但随后从Chrome中提取,转而使用静态方法ArrayBuffer.isView().
与此同时,Mozilla(仍在)谈论实施 ArrayBuffer.isView().
Safari公开了ArrayBufferView构造函数
Chrome有 ArrayBuffer.isView()
Firefox什么都没有
IE - 我还没有接近......
所以,我的问题.检查对象是否是ArrayBufferView实例的最简洁方法是什么?
我会使用:
function isAbv(value) {
return value && value.buffer instanceof ArrayBuffer && value.byteLength !== undefined;
}
Run Code Online (Sandbox Code Playgroud)
要么:
var ArrayBufferView = Object.getPrototypeOf(Object.getPrototypeOf(new Uint8Array)).constructor;
function isAbv(value) {
return value instanceof ArrayBufferView;
}
Run Code Online (Sandbox Code Playgroud)