Descargar archivo con JavaScript desde un Blob

En javascript los Blobs representan archivos con datos inmutables. Es decir, permiten almacenar cualquier tipo de datos, al igual que un archivo, y se almacenan en memoria.

El siguiente código permite descargar un archivo desde el navegador generado mediante un Blob.

function downloadBlob(blob, name) {
    // Convertir el blob en Blob URL (una URL especial que apunta a un objeto almacenado en la memoria del navegador)
    const blobUrl = URL.createObjectURL(blob);

    // Crear link de descarga y apuntar al Blob URL
    const link = document.createElement("a");
    link.href = blobUrl;
    link.download = name;
    document.body.appendChild(link);

    // Ejecutar el evento click del enlace creado anteriormente
    // Es necesario hacerlo de esta manera porque en Firefox link.click() no funciona
    link.dispatchEvent(
        new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: window
        })
    );

    // Eliminar el link del DOM
    document.body.removeChild(link);
}

// Cómo usarlo
let jsonBlob = new Blob(['{"name": "Teodomiro"},{"name": "Agapito"}'])
downloadBlob(jsonBlob, 'usuarios.json');
👉  Medir tiempos de ejecución en JavaScript

👇Tu comentario