'How to check if a variable is a blob in JavaScript
As typeof returns "object"..
var MyBlob = new Blob(['test text'], {type : 'text/plain'});
console.log(typeof MyBlob) // "object"
is it too early to ask for a generic solution for checking whether or not a variable is a blob as it is not yet widely supported? Or how should I go about testing for blob type in browsers which already have it implemented?
Solution 1:[1]
Note that instanceof needs to be passed the exact constructor function used to create the object!
This isn't always the case in NodeJS, since it doesn't have a global Blob implementation (so we're dealing with polyfills).
For example, node-fetch uses an internal Blob implementation, but if you're using jest in a test suite (which polyfills Blob), you'll notice that expect(myBlob).toBeInstanceOf(Blob); will throw an exception similar to:
expect(value).toBeInstanceOf(constructor)
Expected constructor: Blob
Received constructor: Blob
In such cases, the best we can do is:
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
});
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
