tilbage til lektionen
Dette materiale er kun tilgængeligt på følgende sprog: عربي, English, Español, Français, Italiano, 日本語, 한국어, Русский, Türkçe, Українська, Oʻzbek, 简体中文. Hjælp os med at oversætte til Dansk.

Hvor er "document" i hierarkiet?

vigtighed: 4

Hvilken klasse hører document til?

Hvad er dens position i DOM-hierarkiet?

Arver den fra Node eller Element, eller måske HTMLElement?

Vi kan se, hvilken kalsse den tilhører ved at udskrive den, f. eks. sådan her:

alert(document); // [object HTMLDocument]

eller:

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

Så, document er en udgave af klassen HTMLDocument.

Hvad er dens position i hierarkiet?

Ja, vi kunne selvfølgelig gennemgå specifikationen, men det er måske hurtigere at finde ud af det manuelt.

Lad os gennemløbe prototypekæden via __proto__.

Vi ved følgende: Metoderne for en klasse findes i egenskaben prototype hos konstruktøren. For eksempel har HTMLDocument.prototype metoder for dokumenter.

Derudover er der en reference til constructor funktionen inde i prototype:

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

For at få et navn på klassen som en streng, kan vi bruge constructor.name. Lad os gøre det for hele document prototypekæden, indtil klassen Node:

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

Det er hierarkiet.

Vi kunne også undersøge objektet ved hjælp af console.dir(document) og se disse navne ved at åbne __proto__. Konsollen henter dem internt fra constructor egenskaben.