В JavaScript DOM есть окно глобальных объектов и документ.
Нет, не совсем.window
является частью объектной модели браузера (BOM), а не Режим объекта документа l.И document
не является Глобальным объектом, это свойство Глобального window
объекта.Причина, по которой вы можете получить к нему доступ просто как document
, заключается не в том, что document
является глобальным, а в том, что window
есть, и из-за того, как работает JavaScript Scope Chain , пропуск window
просто означает, чтов конечном итоге он найдет document
в глобальном window
объекте.
«Базовая» объектная модель документа - это универсальный API для работы с документами XML или HTML, и поскольку он может использоваться в обоих видах,document
объект не является специфическим для документа HTML или XML.
Графический объект, который вы показываете, относится к варианту объектной модели документа, который называется HTML DOM , который учитывает элементы и атрибуты, специфичные для документов HTML, и, таким образом, да, на этом графике HTMLDocument
реализует интерфейс Document
, и это означает, что HTMLDocument является типом документа, но он все ещетакже реализует интерфейс Node
.
Теперь, наконец, мы должны обратиться к типам против экземпляров.В JavaScript нет window
или document
«типа», есть «объекты», которыми являются window
и document
.Объекты бывают разных видов, и window
является экземпляром объекта Window
, тогда как document
является экземпляром объекта Document
:
console.log(typeof window); // The window is a type of object
console.log(window instanceof Window); // Particularly a Window object
// You can often find out what interface the object implements
// by just logging it cast as a string.
console.log(window.toString());
console.log(document.toString());