Based on Chrome, FF implementations NamedNodeMap can be iterable([Symbol.iterator])

for (const attr of document.body.attributes) {
console.log(attr);
}
however, in the spec, there is no mention about that. For instance DOMTokenList has iterable<DOMString>.
Per Web IDL, any indexed getter and length property makes you automatically get [Symbol.iterator].
Specifically https://heycam.github.io/webidl/#es-iterators (since I had that on the clipboard for a reply before domenic's comment landed)
@domenic @inexorabletash thanks for the clarification.
Most helpful comment
Specifically https://heycam.github.io/webidl/#es-iterators (since I had that on the clipboard for a reply before domenic's comment landed)