Fabrice Bellard's jsLinux and Jeff Parsons's https://www.pcjs.org/ are pretty fascinating.
I think Bellard uses emscripten (transpiled machine and device emulator code from C to JS), while pcjs is hand-coded JS (which is neat: https://github.com/jeffpar/pcjs/blob/master/modules/pcx86/li...).
Also is the source for jslinux available anywhere? The emscriptified file at https://bellard.org/jslinux/x86emu.js is quite compex.