Читать «Изучаем программирование на JavaScript» онлайн - страница 10

Unknown

454

И напоследок...

455

Функции как значения

459

Функции как полноправные граждане JavaScript

462

Полеты первым классом

463

Написание кода для обработки и проверки пассажиров

464

Перебор пассажиров

466

Передача функции другой функции

467

Тест-драйв... вернее, полет

467

Возвращение функций из функций

470

Код заказа напитков

471

Код заказа напитков: другой подход

472

Постойте, одного напитка недостаточно!

473

Заказ напитков с использованием первоклассной функции

474

Тест-драйв-полет

475

«Веб-кола»

477

Как работает метод массивов sort

479

Все вместе

480

Тем временем в «Веб-коле»

481

Тест-драйв сортировки

482

19

оглавление

11 анонимные функции, область действия и замыкания

Серьезные функции

Мы узнали много нового о функциях, но это далеко не всё. В этой главе

мы пойдем дальше и разберемся в темах, которыми обычно занимаются профессиона-

лы. Вы научитесь действительно эффективно работать с функциями. Глава будет не

слишком длинной, но с довольно интенсивным изложением материала, так что к кон-

цу главы выразительность вашего кода JavaScript превзойдет все ожидания. Вы также

будете готовы к тому, чтобы взяться за анализ кода коллеги или заняться изучением

библиотеки JavaScript с открытым кодом, потому что мы заодно изучим некоторые рас-

пространенные идиомы и соглашения, связанные с использованием функций. А если

вы никогда не слышали об анонимных функциях и замыканиях, то это самое подхо-

дящее место для знакомства!

Посмотрим на функции с другой стороны...

496

Как использовать анонимную функцию?

497

Когда определяется функция? Здесь возможны варианты...

503

Что произошло? Почему функция fly не определена?

504

Как создаются вложенные функции

505

Как вложение влияет на область действия

506

Вот черт! Джуди

Погодите

В двух словах о лексической области действия

508

снова права.

секунду... Джуди

не упоминала о замыканиях?

Кажется, они как-то связаны

Чем интересна лексическая область действия

509

с тем, что мы делаем. Давайте-ка

Снова о функциях

511

изучим эту тему и поквитаемся

с ней.

Вызовы функций (снова)

512

Что такое «замыкание»?

515

Как замкнуть функцию

516

Использование замыканий для реализации счетчика

518

Тест-драйв волшебного счетчика

519

Взгляд за кулисы

519

Создание замыкания с передачей функционального

выражения в аргументе

521

Замыкание содержит непосредственное окружение,

а не его копию

522

Создание замыкания в обработчике события

523

Программа без замыкания

524

Программа с замыканием

524

Тест-драйв счетчика нажатий

525

Как работает замыкание

526

20

оглавление

12 нетривиальное создание объектов

Создание объектов

До настоящего момента мы создавали объекты вручную. Для

каждого объекта использовался объектный литерал, который задавал все

без исключения свойства. Для небольших программ это допустимо, но для

серьезного кода потребуется что-то получше, а именно конструкторы объ-

ектов. Конструкторы упрощают создание объектов, причем вы можете созда-

вать объекты по единому шаблону — иначе говоря, конструкторы позволяют

создавать серии объектов, обладающих одинаковыми свойствами и содержа-

щих одинаковые методы. Код, написанный с использованием конструкторов,