To be fair, I believe Bellard's JS x86 emulator predates this (and WASM, and to my knowledge also possibly emscripten) by several years :) It has a very interesting history itself:
> I wrote the initial version of JSLinux[...] in Javascript
> [...] I modified it to use the asm.js Javascript subset [...]
> [...] so I converted the JSLinux asm.js code to C and converted it back to Javascript with emscripten!
https://copy.sh/v86/
To be fair, I believe Bellard's JS x86 emulator predates this (and WASM, and to my knowledge also possibly emscripten) by several years :) It has a very interesting history itself:
> I wrote the initial version of JSLinux[...] in Javascript
> [...] I modified it to use the asm.js Javascript subset [...]
> [...] so I converted the JSLinux asm.js code to C and converted it back to Javascript with emscripten!
[1] https://bellard.org/jslinux/tech.html