Comme typeof renvoie "objet" ..
var MyBlob = new Blob(['test text'], {type : 'text/plain'});
console.log(typeof MyBlob) // "object"
est-il trop tôt pour demander une solution générique pour vérifier si une variable est un blob car elle n'est pas encore largement supportée? Ou comment dois-je procéder pour tester le type de blob dans les navigateurs qui l'ont déjà implémenté?
Vous pouvez tester s'il s'agit d'une instance de Blob comme ceci:
var MyBlob = new Blob(['test text'], {type : 'text/plain'});
console.log(MyBlob instanceof Blob) // true
jsFiddle: http://jsfiddle.net/jfriend00/5xkgd/
Cela fonctionnera également pour les éléments hérités de Blob.
Notez que instanceof
doit recevoir la fonction constructeur exacte utilisée pour créer l'objet!
Ce n'est pas toujours le cas dans NodeJS, car il n'a pas d'implémentation Blob globale (nous avons donc affaire à des polyfills).
Par exemple, node-fetch utilise une implémentation Blob interne, mais si vous utilisez jest dans une suite de tests (qui remplit Blob), vous remarquerez que expect(myBlob).toBeInstanceOf(Blob);
lèvera une exception similaire à:
expect(value).toBeInstanceOf(constructor)
Expected constructor: Blob
Received constructor: Blob
Dans de tels cas, le mieux que nous puissions faire est:
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
});