function isDOMElement(any) {
return any instanceof HTMLElement ||
any instanceof HTMLDocument
}
console.assert(isDOMElement(document), 'document')
console.assert(isDOMElement(document.body), 'document.body')
console.assert(!isDOMElement({}), '{}')
Если делать
let proto = Object.create(HTMLElement.prototype)
// or
let proto2 = {__proto__: HTMLElement.prototype}
то данный объект по определению будет являться элементом, т.к. у него прототип элемента
У меня еще несколько вариантов есть, но пока их раскрывать не стану)