Jaa*_*ütt 27 javascript types blob
当typeof返回"对象"..
var MyBlob = new Blob(['test text'], {type : 'text/plain'});
console.log(typeof MyBlob) // "object"
Run Code Online (Sandbox Code Playgroud)
现在要求一个通用的解决方案来检查变量是否是一个blob还为时尚早,因为它尚未被广泛支持?或者我应该如何在已经实现它的浏览器中测试blob类型?
jfr*_*d00 59
您可以测试它是否是Blob的实例,如下所示:
var MyBlob = new Blob(['test text'], {type : 'text/plain'});
console.log(MyBlob instanceof Blob) // true
Run Code Online (Sandbox Code Playgroud)
jsFiddle:http://jsfiddle.net/jfriend00/5xkgd/
这也适用于从Blob继承的东西.
请注意,instanceof需要传递用于创建对象的确切构造函数!
这在 NodeJS 中并不总是如此,因为它没有全局 Blob 实现(所以我们正在处理 polyfills)。
例如,node-fetch使用内部 Blob 实现,但如果您在测试套件(它填充 Blob)中使用jest,您会注意到它expect(myBlob).toBeInstanceOf(Blob);会抛出类似于以下内容的异常:
expect(value).toBeInstanceOf(constructor)
Expected constructor: Blob
Received constructor: Blob
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们能做的最好的事情是:
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
});
Run Code Online (Sandbox Code Playgroud)