isBlob.js

import getTag from './internals/getTag';
import { blobTag, stringUndefined } from './internals/native';
// Blob 对象是否存在
const blobExisted = typeof Blob !== stringUndefined;
/**
 * 检查值是否为 `Blob` 对象。
 *
 * 浏览器环境的 `Blob` 或 `File` 对象,或其他继承自 `Blob` 的实例,都将返回 `true`。
 *
 * @alias module:Language.isBlob
 * @since 1.0.0
 * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/Blob | Blob}
 * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/File | File}
 * @param {*} value 要检查的值。
 * @returns {boolean} 如果值为 `Blob` 对象,返回 `true`,否则返回 `false`。
 * @example
 *
 * isBlob(new Blob(['a'])); // true
 *
 * isBlob(new File([], 'test.txt')); // true
 *
 * isBlob({}); // false
 *
 * isBlob('2012'); // false
 *
 */
function isBlob(value) {
    // instanceof 不支持跨域对象判断,如来自 iframe 的 Blob 对象
    if (blobExisted && value instanceof Blob) {
        return true;
    }
    return getTag(value) === blobTag;
}
export default isBlob;