From 3611f3fc15fb773a28e3fd6d7800b99539ac3064 Mon Sep 17 00:00:00 2001 From: ParkSuMin Date: Fri, 14 Nov 2025 12:57:45 +0300 Subject: [PATCH] Lecture 7 final --- lec/6-7.md | 179 ++++++++++++++++++++++++++++++++++++++++++++++- lec/img/Node.png | Bin 0 -> 18035 bytes 2 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 lec/img/Node.png diff --git a/lec/6-7.md b/lec/6-7.md index 9ebb370..252820d 100644 --- a/lec/6-7.md +++ b/lec/6-7.md @@ -49,4 +49,181 @@ map.set(key, value) let set = new Set() -``` \ No newline at end of file +``` + +## Области видимости +```js +// global +let a = 'a'; +const b = 123; // ссылка на объект + +function someF(name){ + // block scope + let a = 'asd'; + for (let i = 0; i < 10; i++){ + // block scope (loop) + } +} + +// a и someF - глобальные перменные, но не свойства глобального объекта window + +// alert(i); не сработает +``` +Перекрытие + +Поднятие (hoisting) - поднятие всех неймингов более верхнего уровня (блок -> функциональный блок -> глобально) + +Temporal dead zone - термин, обозначающий состояние, в котором переменные недоступны + +## ООП ~~(ура)~~ +```js +class LOL [extends MEME]{ + prop1 = 'lul' // public + #prop2 = 'fun' // private + constrictor(arg1, arg2) { + super(arg2); // parent's constructor + this.prop1 = arg1; + this.#prop2 = arg2; + } + + // getters and setters + set prop1(value){}; + get prop1() {return this.prop1;} + + // methods + method1(params) {} + static sMethod(params){} // can be called by LOL.sMethod(params) +} +``` + +```js +class Test_1{ + a; + b; + + constructor(a_){ + this.a = a_; + } + method1() {console.log(this);} +}; + +class Test_2 extends Test_1 { + b; + constructor(a_, b_){ + super(a_); + this.b = b_; + } + method2() {console.log(this);} +} +``` + +## Окружение JS + +window -> DOM -> Document, ... + +window-> BOM -> navigator, screen, location, frames, history, XMLHttpRequest, ... + +window -> Javascript -> Object, Array, Function, ... + +### DOM +Основные узлы: +- Document +- Элементы (текст, комментарии и прочее) +- Узлы + +#### Навигация по DOM + +По Document +- document +- document.documentElement (\) +- document.body (если внутри body) +- documemt.header + +По узлам: +- parentNode +- childNode +- previousSibling +- nextSibling +- firstChild +- lastChild + +#### Поиск по DOM +- document.getElementById(id) +- elem.getElementsByTagName(tag) +- document.getElementsByName(id) +- elem.getElementsByClassName(className) +- elem.querySelectorAll(selector) +- elem.querySelector(selector) +- elem.matches(selector) +- elem.closest(selector) + +#### Свойства узлов в DOM +Тип узла: +- nodeType + +Тег узла: +- NodeName/ tagName + +Содержимое узла: +- innerHTML / data + +Видимость узла: +- hidden + +![Scheme](img/Node.png) + +DOM-свойства: +- Могут иметь любое значение +- Чувстивтельны к регистру +- Работаю за счёт того, что DOM-узлы объекты JS + +Атрибуты: +- Строки +- Пофиг на регистр +- Видны в innerHTML + +Доступ к аттрибутам: +- elem.hasAttribute(name) +- elem.getAttribute(name) +- elem.setAttribute(name, value) +- elem.removeAttribute(name) +- elem.attributes + +#### Добавление и удаление узлов +Создание элемента/узла: +- document.createElement(tag) +- document.createTextNode(text) + +Клонирование элемента или узла: +- elem.cloneNode(true/false) + +Добавление элемента/узла: +- parentElem.appendChild(elem) +- parentElem.insertBefore(elem, nextSibling) + +Удаление элемента: +- parentElem.removeChild(elem) +- parentElem.replaceChild(newElem, elem) +- elem.remove() + + +#### Браузерные события +1. Клавиатурные события +2. События на элементах управления +3. События мыши +4. События документа + +Назначения обработчика события: +- Атрибут HTML +- Свойство DOM-объекта + +Свойства объекта события: +- event.type +- event.currentTarget +- event.clientX/clientY +- event.message and etc. + +Фазы событий: +- Погружение (capturing) +- Цель (target) +- Всплытие (bubbling) \ No newline at end of file diff --git a/lec/img/Node.png b/lec/img/Node.png new file mode 100644 index 0000000000000000000000000000000000000000..24229c6755c16e82c999559849fdc6e5ac1031d8 GIT binary patch literal 18035 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