torna alle lezioni

In che punto della gerarchia DOM si trova "document"?

A quale classe appartiene document?

Qual è il suo posto nella gerarchia DOM?

Eredita da Node, da Element o forse da HTMLElement?

Possiamo visualizzare a quale classe appartiene esaminandola in questo modo:

alert(document); // [object HTMLDocument]

Oppure:

alert(document.constructor.name); // HTMLDocument

Quindi document è un’istanza della classe HTMLDocument.

Qual è il suo posto nella gerarchia DOM?

Certo, potremmo sfogliare la specifica, ma sarebbe più veloce scoprirlo manualmente.

Attraversiamo la catena dei prototipi tramite __proto__.

Come sappiamo i metodi di una classe sono nel prototype del costruttore. Per esempio HTMLDocument.prototype ha i metodi per i documenti.

C’è inoltre un riferimento al costruttore all’interno di prototype:

alert(HTMLDocument.prototype.constructor === HTMLDocument); // true

Per ricavare la stringa con il nome della classe possiamo usare constructor.name. Facciamolo per l’intera catena prototipale document fino alla classeNode:

alert(HTMLDocument.prototype.constructor.name); // HTMLDocument
alert(HTMLDocument.prototype.__proto__.constructor.name); // Document
alert(HTMLDocument.prototype.__proto__.__proto__.constructor.name); // Node

Questa è la gerachia.

Potremmo anche esaminare l’oggetto usando console.dir(document) e visualizzare gli stessi nomi aprendo __proto__. La console li ricava internamente da constructor.