Какие типы глобальных объектов `window` и` document`? - PullRequest
0 голосов
/ 30 апреля 2019

В JavaScript DOM есть глобальные объекты window и document.

Какой тип window?Это Window?

Какой тип document?HTMLDocument (см. Диаграмму ниже) или Document?

По типу я имею в виду interface в https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model, или class в JavaScript:Полное руководство

enter image description here

1 Ответ

3 голосов
/ 30 апреля 2019

В 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...