Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
223
Добавлен:
17.04.2018
Размер:
762.37 Кб
Скачать

Интернет-программирование

МИЭТ, 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

Функциональный подход

Прототипный подход

Соседние файлы в папке Интернет технологии