Typeofは「オブジェクト」を返します。
var MyBlob = new Blob(['test text'], {type : 'text/plain'});
console.log(typeof MyBlob) // "object"
変数がまだ広くサポートされていないため、変数がblobであるかどうかを確認するための一般的なソリューションを求めるのは時期尚早ですか?または、すでに実装されているブラウザでblob型をテストするにはどうすればよいですか?
次のようにBlobのインスタンスかどうかをテストできます。
var MyBlob = new Blob(['test text'], {type : 'text/plain'});
console.log(MyBlob instanceof Blob) // true
jsFiddle: http://jsfiddle.net/jfriend00/5xkgd/
これは、Blobから継承するものでも機能します。
instanceof
には、オブジェクトの作成に使用した正確なコンストラクター関数を渡す必要があることに注意してください。
NodeJSではグローバルBlob実装がないため、これは常に当てはまるわけではありません(したがって、ポリフィルを扱っています)。
たとえば、node-fetchは内部Blob実装を使用しますが、テストスイート(Blobをポリフィルする)でjestを使用している場合、expect(myBlob).toBeInstanceOf(Blob);
は次のような例外をスローします:
expect(value).toBeInstanceOf(constructor)
Expected constructor: Blob
Received constructor: Blob
そのような場合、私たちにできる最善のことは:
const fetch = require('node-fetch');
fetch(/* some request */).then(res => {
const myBlob = await res.blob(); // a Blob created by node-fetch
console.log(myBlob.constructor.name === 'Blob'); // true
});