
- •Интернет-программирование
- •ИП. История JavaScript МИЭТ, 2017
- •ИП. Особенности JavaScript
- •ИП. JavaScript. Прототипное ООП
- •ИП. JavaScript. Наследование в прототипном стиле.
- •ИП. JavaScript. Функции как объекты первого класса
- •ИП. JavaScript. Прототипное ООП. Функции как методы объекта
- •ИП. JavaScript. Прототипное ООП. Зачем такой выбор?
- •ИП. JavaScript. Прототипное ООП. Функции как методы объекта
- •ИП. JavaScript. Лексическая область видимости
- •ИП. JavaScript. Лексическая область видимости
- •ИП. JavaScript. Лексическая область видимости
- •ИП. JavaScript. Поднятие переменных
- •ИП. JavaScript. Область видимости
- •ИП. JavaScript. Объявления функций
- •ИП. JavaScript. Функция, как свойство
- •ИП. JavaScript. Функция, как свойство
- •ИП. JavaScript. Скобки и функции
- •ИП. JavaScript. Цепочка вызовов
- •ИП. JavaScript. Цепочка вызовов
- •ИП. Распространенность JavaScript
- •ИП. Распространенность JavaScript
- •ИП. Быстродействие JavaScript
- •ИП. JavaScript. Возможности языка
- •ИП. JavaScript. Поддержка в оборудовании
- •ИП. JavaScript. Поддержка в оборудовании
- •ИП. JavaScript. Поддержка в оборудовании
- •ИП. JavaScript. Node.js
- •ИП. JavaScript. Node.js
- •ИП. JavaScript. Node.js
- •ИП. JavaScript. Node.js
- •ИП. JavaScript. Node.js
- •ИП. JavaScript. Базы данных
- •ИП. Язык JavaScript. Источники информации
- •ИП. Премия имени Грейс Мюррей Хоппер
Интернет-программирование |
МИЭТ, 2017 |
Лекция 6.
JavaScript

ИП. История JavaScript МИЭТ, 2017
1995 г. Задача — язык управления объектами страницы в браузере Netscape
Классификация — прототипно-ориентированный (сценарный)
Использование — встраиваемый в приложения для управления объектами в выделенной области
Разработчики:
Брендан Эйх, США |
Мар Андриссен, США |
Билл Джой, США |
Mozilla Corporation |
Netscape Communications |
Sun Microsystems |
Программист, ученый |
Программист, бизнесмен |
Программист, ученый, бизнесмен |
|
|
Премия Грейс Хоппер за Unix 1986 |
ИП. Особенности JavaScript |
МИЭТ, 2017 |
Динамическая типизация
Автоуправление памятью (сборка мусора)
Прототипный подход к ООП
Функции — объекты первого класса (функции как объекты)
Лексическая область видимости переменных (scope)

ИП. JavaScript. Прототипное ООП |
МИЭТ, 2017 |

ИП. JavaScript. Наследование в прототипном стиле. |
МИЭТ, 2017 |

ИП. JavaScript. Функции как объекты первого класса |
МИЭТ, 2017 |
Результат работы в консоли

ИП. JavaScript. Прототипное ООП. Функции как методы объекта |
МИЭТ, 2017 |
Результат работы в консоли
ИП. JavaScript. Прототипное ООП. Зачем такой выбор? |
МИЭТ, 2017 |
Ограничения:
1.Контент должен отображаться и без код скрипта
2.Сервер передающий контент клиенту должен «мочь» передать код скрипта для управления контентом
3.Заранее не известно какой контент будет передан
Решение:
1.Контекст в котором можно управлять (в том числе отображать) контентом должен создаваться браузером
2.Скрипт управления контентом должен быть встраиваем в передаваемый контент
3.Скрипт из п.2 должен взаимодействовать с контекстом (окружением), создаваемым браузером в п 1.
Вывод:
1.Если язык встраивается, то логично, что он будет наследовать уже созданный объектный контекст, а не создавать его из не структурированных данных.
2.Встраивание означает, что у самого объекта языка уже будет родитель (прототип)
3.Из 2 и 1 следует, что иерархия прототипов должна распространяться на весь контекст

ИП. JavaScript. Прототипное ООП. Функции как методы объекта |
МИЭТ, 2017 |
Встраивание в контекст
объект
объект
объект
объект
объект
JavaScript
объект
объект
Программа является частью контента
т. е. готовых структурированных данных
Разработчик имеет ограничения.
Он не может определить конструкции, которые не согласуются с заданной в контексте объектной моделью Но тогда логично сделать ее единой,
чтобы одно всегда вытекало из другого.
Построение контекста
Java, C++
объект
объект
объект
объект
объект
объект
Программа создает контент из данных
Разработчик полностью независим в определении структуры приложения,
которую от строит с помощью классов
<script>
var Ups = "How are Your?";
console.log(window.Ups); // Выведет "How are Your?", значит Ups стало свойством объекта window! </script>
Как тогда в «прототипном ООП» организовать инкапсуляцию?

ИП. JavaScript. Лексическая область видимости |
МИЭТ, 2017 |
Функция «видит» переменные, которые были записаны в коде на одном уровне с ней
Таким образом, область видимости функции привязана к порядку написания (лексике), а не исполнения кода.