WebAssembly actually CAN access the DOM, but it requires some glue code.
Essentially, from the developer perspective WebAssembly is like embedding native code as a scripting language in the browser.
Only primitive data types can be passed back and forth between the foreign function interface between the two.