
- •Интернет-программирование
- •ИП. ООП в JavaScript. Замыкания и контекст вызова
- •ИП. ООП в JavaScript. Контекст вызова
- •ИП. ООП в JavaScript. Контекст вызова
- •ИП. ООП в JavaScript. Потеря контекста вызова
- •ИП. ООП в JavaScript. Явная передача контекста МИЭТ, 2017
- •ИП. ООП в JavaScript. Передача контекста с помощью return
- •ИП. ООП в JavaScript. Привязка контекста с помощью bind
- •ИП. ООП в JavaScript. Повторяем скобки
- •ИП. ООП в JavaScript
- •ИП. JavaScript. ООП в функциональном стиле
- •ИП. JavaScript. ООП. Наследование в функциональном стиле.
- •ИП. JavaScript. ООП. Переопределение методов в функц. стиле.
- •ИП. JavaScript. ООП. Множественное наследование в функц. стиле. МИЭТ, 2017
- •ИП. JavaScript. ООП в прототипном стиле.
- •ИП. JavaScript. ООП в прототипном стиле. Кроссплатформенность. МИЭТ, 2017
- •ИП. JavaScript. ООП в прототипном стиле. Кроссплатформенность. МИЭТ, 2017
- •ИП. JavaScript. ООП в прототипном стиле. Кроссплатформенность. МИЭТ, 2017
- •ИП. JavaScript. Обработка ошибок
- •ИП. JavaScript. Библиотеки
- •ИП. JavaScript. Библиотеки
- •ИП. JavaScript. Библиотеки. jQuery
- •ИП. JavaScript. Библиотеки. JQuery. Перебор элементов
- •ИП. JavaScript. Библиотеки. JQuery. Селекторы
- •ИП. JavaScript. JQuery. Манипуляции с наборами
- •ИП. JavaScript. JQuery. Изменение содержимого
- •ИП. JavaScript. JQuery. Изменение содержимого
- •ИП. JavaScript. JQuery. Изменение оформления
- •ИП. JavaScript. JQuery. Изменение оформления
- •ИП. JavaScript. JQuery. Изменение описания
- •ИП. JavaScript. JQuery. Изменение геометрии и позиционирования МИЭТ, 2017
- •ИП. JavaScript. JQuery. Обработка событий
- •ИП. JavaScript. JQuery. Обработка событий
- •ИП. JavaScript. Ajax и JQuery
- •ИП. JavaScript. Библиотеки. ООП. jQuery
- •ИП. JavaScript. Библиотеки. ООП. MooTools
- •ИП. JavaScript. Библиотеки. ООП. Prototype
Интернет-программирование |
МИЭТ, 2017 |
Лекция 7.
JavaScript
( продолжение )
ИП. ООП в JavaScript. Замыкания и контекст вызова |
МИЭТ, 2017 |
Замыкание — функция (т. е. то что меняет) и все внешние переменные, которые ей доступны (т.е. то что она может изменить вне себя и, таким образом, повлиять на код, который также использует эти переменные)
Замыкание определяется лексически (т. е. по факту статическим расположением функций и переменных в коде при его анализе интерпретатором)
Только функция (т. е. лексическая конструкция функции) ограничивает (т.е. замыкает) область видимости переменных
Контекст вызова (this) — внешний по отношению к вызываемой функции (или методу) объект внутри (т. е. в контексте) которого она вызвана
Контекст вызова определяется в момент вызова функции (т. е. по факту динамически)
Говорят, что контекст это «то что перед точкой при вызове функции»
(например при вызове window.Date() функция Date() вызывается в контексте объекта window)

ИП. ООП в JavaScript. Контекст вызова |
МИЭТ, 2017 |
Самый глобальный this это window.
Поэтому вызов this в конcоли возвращает window.

ИП. ООП в JavaScript. Контекст вызова |
МИЭТ, 2017 |
Присваеваемый метод может получать контекст объекта которому он присваивается, а значит получает доступ к свойствам и методам объекта контекста

ИП. ООП в JavaScript. Потеря контекста вызова |
МИЭТ, 2017 |
Потеря контекста вызова при присваивании
Не явная потеря контекста вызова при выполнении

ИП. ООП в JavaScript. Явная передача контекста МИЭТ, 2017
call(контекст, аргумент1, аргумент2, ...) — ограниченное количество аргументов
apply(контекст, [аргумент1, аргумент2, ...]) — не ограниченное количество аргументов

ИП. ООП в JavaScript. Передача контекста с помощью return |
МИЭТ, 2017 |

ИП. ООП в JavaScript. Привязка контекста с помощью bind |
МИЭТ, 2017 |
Привязка означает, что теперь функция showName в переменной new_sn будет «следить»
За тем объектом, к которому она привязана и будет брать данные из его актуального контекста
ИП. ООП в JavaScript. Повторяем скобки |
МИЭТ, 2017 |
{} - внутри объект
() - внутри выражение
[] - внутри массив
()() - попробовать выполнить выражение как функцию
{}.метод(), ().метод(), [].метод() - применить допустимый метод к тому что слева от «.»
Примеры
Применение метода sort к анонимному массиву
console.log(["Zelenograd","MIET"].sort()); // вертнет - ["MIET", "Zelenograd"]
Копирование методов стандартных объектов
function Test() {}; var t = new Test();
t.sort = [].sort; // копируем метод sort массива console.log(t); // покажет функцию t с методом sort внутри
ИП. ООП в JavaScript |
МИЭТ, 2017 |
ООП в JavaScript
Функциональный подход
Прототипный подход