-
Notifications
You must be signed in to change notification settings - Fork 16
document
воспользуемся рекурсивной функцией showProto:
function showProto ( elem ) {
var proto = elem.__proto__
if ( !proto ) return
console.info ( proto.constructor.name )
showProto ( proto )
}для получения цепочки прототипов объекта document
showProto ( document )Результат:
HTMLDocument
Document
Node
EventTarget
ObjectОбъект document включает две структурные части:
document.head
document.body
Если применить функцию showProto к document.head:
showProto ( document.head )то мы получим такую цепочку протипов:
HTMLHeadElement
HTMLElement
Element
Node
EventTarget
ObjectПрименим функцию showProto к document.body:
showProto ( document.body )цепочка протипов будет такой:
HTMLBodyElement
HTMLElement
Element
Node
EventTarget
Objectdocument |
document.head |
document.body |
|---|---|---|
HTMLHeadElement |
HTMLBodyElement |
|
HTMLDocument |
HTMLElement |
HTMLElement |
Document |
Element |
Element |
Node |
Node |
Node |
EventTarget |
EventTarget |
EventTarget |
Object |
Object |
Object |
Все цепочки прототипов заканчиваются Object
Все html-элементы наследуют от класса HTMLElement
✅ document.head // __proto__: HTMLHeadElement
✅ document.body // __proto__: HTMLBodyElement
✅ document.doctype // строка
✅ document.URL // строка
✅ document.location // объект
✅ document.images // HTMLCollection
✅ document.forms // HTMLCollection
✅ document.links // HTMLCollection
✅ document.cookie // строка
...Выполним код в консоли:
for ( var prop in document )
prop.indexOf ( "on" ) === 0 ?
console.info ( prop.slice(2) ) : ""Мы получим длинный перечень событий объекта document
Все свойства, имена которых начинаются на "on", могут содержать ссылку на обработчика события, тип которого определяется тем, что следует за "on" в имени свойства
по умолчанию эти значениями этих свойств будет null
☕
например, присвойте свойству onmouseover объекта document ссылку на функцию:
document.onmouseover = function ( event ) {
console.info ( `${event.clientX} : ${event.clientY}` )
} Метод createElement создает элемент DOM
Аргументом метода является строка, содержащая имя тега html-элемента ( регистр не имеет значения )
Если переданная строка не соответствует никакому тегу в спецификации языка html, то созданный элемент будет иметь класс HTMLUnknownElement
Для поиска элементов на странице у объекта document есть несколько методов:
ищет элемент по его атрибуту id
Возвращают коллецию html-элементов ( итерабельный объект класса HTMLCollection ) либо по имени тега, либо по имени класса
Возвращает первый найденный элемент по указанному селектору
<body>
<h3 id="demo">demo</h3>
<section>
<div title="figure">figure</div>
<figure class="promoClass">promoClass</figure>
</section>
<input type="number">
<input type="color">
</body>document.querySelector ( "section" )
document.querySelector ( "#demo" )
document.querySelector ( ".promoClass" )
document.querySelector ( "[type='number']" )
document.querySelector ( "[title]" )Возвращает итерабельный объект класса NodeList, содержащий все элементы, соответствующие указанному селектору
Объект NodeList
| ☕ 1 |
|---|
Объект HTMLCollection
Строка ( 09/30/2018 11:00:15 )
DOM представляет собой граф ( дерево ), вершины которого ( узлы, или nodes ) могут быть html-элементами, комментариями, обычным текстом...
Получить все дочерние узлы элемента DOM можно с помощью свойства childNodes этого элемента
☕
document.body.childNodes
document.querySelector ( "main" ).childNodesКаждый узел ( объект ) имеет свойство nodeType:
| Код | Тип узла | Пример |
|---|---|---|
1 |
ELEMENT_NODE |
<div> |
2 |
ATTRIBUTE_NODE |
href = "https://translate.google.com/" |
3 |
TEXT_NODE |
document.body.appendChild ( new Text( "Hello" ) ) |
4 |
CDATA_SECTION_NODE |
|
5 |
ENTITY_REFERENCE_NODE |
|
6 |
ENTITY_NODE |
|
7 |
PROCESSING_INSTRUCTION_NODE |
|
8 |
COMMENT_NODE |
<!-- ... --> |
9 |
DOCUMENT_NODE |
<html>...</html> |
10 |
DOCUMENT_TYPE_NODE |
<!DOCTYPE> |
11 |
DOCUMENT_FRAGMENT_NODE |
|
12 |
NOTATION_NODE |
☕ 1
document.body.appendChild ( new Text( "Hello" ) )
document.body.childNodes▼ NodeList [text]
0: text
length: 1
► __proto__: NodeList
© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 |
| ⏬ |
|---|
- Блок-схема алгоритма
- Developer Tools
- Chrome DevTools
- Переменные
- Оператор typeof
- Структуры данных
- Операторы присваивания
- Логические выражения
- Условные операторы
- Инкремент
- Свойство length
- Оператор цикла for
- UTF-8
Homework
- Приведение типов
- NaN | null | Infinity
- BigInt (ES10)
- Функции
- Методы
- Методы строк
- Методы массивов
- Date ()
Самостоятельная работа
Практика (XSS)
Homework
- Циклы while и do...while
- Циклы for...of и for...in
- Параметры по умолчанию
- Объект function
Практика
Homework
- Нативные и host-объекты
- Литерал объекта
- Унаследованные свойства
- Конструктор
- Модель наследования
- Публичные и приватные свойства
- Оператор in
1
Homework
- Итерирующие методы массивов
- Тестирование производительности
- SHA
Homework
- Размеры и прокрутка элемента
- Event Loop
- async | await
- API
- REST | HATEOAS
- status codes
JSON placeholder-
JSON server
fake chat
Homework
- strict mode
- Вычисляемые имена свойств
- Краткий синтаксис методов
- Краткий литерал объекта
- Классы
Homework
- :not(:defined)
- Shadow DOM
- Custom elements
- Lifecycle hooks
- whenDefined
- <template>
- slot
1
2
3
Homework
- npm
- webpack
Упражнение 1- ES6 модули
Упражнение 2- --mode | --watch
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Homework
| ⏫ |
|---|

Дополнительно
Справочная инфо
Git Bush
TCP/IP
Коды символов