Weil document
ein HTMLDocument Objekt mit den Eigenschaften aufgeführt ist here, und eine dieser Eigenschaften ist body
, die eine Instanz von HTMLElement ist. Sie können versuchen, diese in der Konsole Ihres Browsers:
document instanceof HTMLElement
wird false
zurück.
document instanceof HTMLDocument
wird true
zurückgeben.
document.body instanceof HTMLElement
wird true
zurückgeben.
So, jetzt wissen wir, dass document
und document.body
verschiedene Arten von Objekten sind. Sie können die Dokumentation von Mozilla unter den obigen Links durchsuchen, um die für jeden Objekttyp verfügbaren Eigenschaften und Methoden zu sehen.Zum Beispiel ist getElementById nur auf document
verfügbar und getElementsByTagName ist auf jedem Element Objekt, wie body
(Element
die Schnittstelle das Elternteil HTMLElement
ist, und so werden auch Methoden aus HTMLElement
Element
Verfügung haben).
Wenn auf alle Tagnamen wie eine Eigenschaft wie document.body.p
zugegriffen werden könnte, würde ein Namenskonflikt auftreten. document.body.style
gibt eine CSSStyleDeclaration zurück, aber wenn style
als ein Tagname behandelt wurde, wie Sie vorschlagen, dann müsste es eine HTMLCollection von <style>
Elemente zurückgeben. (Obwohl technisch <style>
Elemente im Körper ungültig ist, wird der Browser es immer noch analysieren.)
Ich sehe den Punkt dieser Frage nicht, da Javascript die Verwendung von 'document.getElementsByTagName ('p')' bietet Wird eine Knotenliste zurückgegeben, müsste die Rückgabe von 'document.body.p' auch das gleiche Ergebnis liefern, wenn mehrere Absatzelemente gefunden werden. – NewToJS
Ein Grund dafür ist, dass "document.body" mehrere Absatzelemente enthalten kann. –
Sie haben nur ein Körperelement in einer Seite, wie Kopf oder Titel. Es ist offensichtlich, dass diese Elemente Eigenschaften anstelle von p oder div haben ... –