13

バックグラウンド

少し調査したところ、ArrayBufferView最初は ([NoInterfaceObject] を通じて) 公開されていませんでしたが、説明したユース ケースにより、公開すべきであるという幅広い合意があるように見えました。

最初の合意はArrayBufferView、名前空間でコンストラクターを公開することでしたDOMWindow。これは、Safari (および 6.1.1 でも引き続き機能します) と Chrome で実装されましたが、静的メソッドを優先してChrome からプルされArrayBuffer.isView()ました。

一方、Mozilla は (まだ)実装について話しています ArrayBuffer.isView()

簡単に言えば:

  • Safari はArrayBufferViewコンストラクターを公開します

  • クロムはArrayBuffer.isView()

  • Firefoxには何もありません

  • IE - まだ近づいていません...

質問

それで、私の質問です。オブジェクトが ArrayBufferView のインスタンスであるかどうかを確認する最も簡潔な方法は何ですか?

4

2 に答える 2

9

私はどちらかを使用します:

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

また:

var ArrayBufferView = Object.getPrototypeOf(Object.getPrototypeOf(new Uint8Array)).constructor;
function isAbv(value) {
    return value instanceof ArrayBufferView;
}
于 2014-02-15T15:53:09.360 に答える