Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание

Тут можно читать онлайн Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание - бесплатно ознакомительный отрывок. Жанр: comp-db, издательство Символ-Плюс, год 2012. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    JavaScript. Подробное руководство, 6-е издание
  • Автор:
  • Жанр:
  • Издательство:
    Символ-Плюс
  • Год:
    2012
  • Город:
    СПб
  • ISBN:
    978-5-93286-215-5
  • Рейтинг:
    2.5/5. Голосов: 21
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание краткое содержание

JavaScript. Подробное руководство, 6-е издание - описание и краткое содержание, автор Дэвид Флэнаган, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
C момента выхода первого издания в 1996 году книга "JavaScript: Подробное руководство" превратилась в библию программистов на JavaScript. За эти годы было издано более 500000 экземпляров, и веб-разработчики по-прежнему с восторгом отзываются о ней.
Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами.

JavaScript. Подробное руководство, 6-е издание - читать онлайн бесплатно ознакомительный отрывок

JavaScript. Подробное руководство, 6-е издание - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Дэвид Флэнаган
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

var Set = sets.Set; // Импортировать Set в глобальное пространство имен

var s = new Set(1,2,3); // Теперь его можно использовать без префикса sets.

Иногда авторы модулей используют глубоко вложенные пространства имен. Если модуль с определениями классов множеств является частью обширной коллекции модулей, для него может использоваться пространство имен collections , sets , а сам модуль может начинаться со следующих определений:

var collections; // Объявить (или повторно объявить) глобальную переменную

if (!collections) // Если объект еще не существует

collections = {}; // Создать объект пространства имен верхнего уровня

collections.sets = {} //И внутри него создать пространство имен sets.

// Теперь определить классы множеств внутри collections.sets

collections.sets.AbstractSet = function() { ... }

Иногда пространство имен верхнего уровня используется для идентификации разработчика или организации - автора модуля и для предотвращения конфликтов между пространствами имен. Например, библиотека Google Closure определяет свой класс Set в пространстве имен goog.structs . Для определения глобально уникальных префиксов, которые едва ли будут использоваться другими авторами модулей, индивидуальные разработчики могут использовать компоненты доменного имени. Поскольку мой вебсайт имеет имя davidflanagan.com , я мог бы поместить свой модуль с классами множеств в пространство имен com.davidflanagan.collections.sets .

При таких длинных именах для любого пользователя вашего модуля операция импортирования становится особенно важной. Однако, вместо того чтобы импортировать имена отдельных классов, программист мог бы импортировать в глобальное пространство имен весь модуль целиком:

var sets = com.davidflanagan.collections.sets;

В соответствии с соглашениями имя файла модуля должно совпадать с его пространством имен. Модуль sets должен храниться в файле с именем sets.js . Если модуль использует пространство имен collections.sets , то этот файл должен храниться в каталоге collections/ (этот каталог мог бы также включать файл maps.js ). А модуль, использующий пространство имен com.davidflanagan.collections.sets , должен храниться в файле com/davidflanagan/collections/sets.js .

9.9.2. Область видимости функции как частное пространство имен

Модули имеют экспортируемый ими общедоступный прикладной интерфейс (API): это функции, классы, свойства и методы, предназначенные для использования другими программистами. Однако зачастую для внутренних нужд модуля требуются дополнительные функции или методы, которые не предназначены для использования за пределами модуля. Примером может служить функция Set._v2s() из примера 9.6 - для нас было бы нежелательно, чтобы пользователи класса Set вызывали эту функцию, поэтому было бы неплохо сделать ее недоступной извне.

Этого можно добиться, определив модуль (в данном случае класс Set ) внутри функции. Как описывалось в разделе 8.5, переменные и функции, объявленные внутри другой функции, являются локальными по отношению к этой функции и недоступны извне. Таким образом, область видимости функции (называемой иногда «функцией модуля») можно использовать как частное пространство имен модуля. Пример 9.24 демонстрирует, как это может выглядеть применительно к нашему классу Set .

Пример 9.24. Класс Set внутри функции модуля

// Объявляет глобальную переменную Set и присваивает ей значение, возвращаемое

// функцией. Круглые скобки, окружающие объявление функции, свидетельствуют о том,

// что функция будет вызвана сразу после ее объявления и что присваивается значение,

// возвращаемое функцией, а не сама функция. Обратите внимание, что это выражение

// определения функции, а не инструкция, поэтому наличие имени "invocation"

// не вызывает создание глобальной переменной,

var Set = (function invocation() {

function Set() { // Эта функция-конструктор - локальная переменная,

this.values = {}; // Свойство для хранения множества

this.n = 0; // Количество значений в множестве

this.add.apply(this, arguments); // Все аргументы являются значениями,

} // добавляемыми в множество

// Далее следуют определения методов в Set.prototype.

// Для экономии места программный код опущен

Set.prototype.contains = function(value) {

// Обратите внимание, что v2s() вызывается без префикса Set._v2s()

return this.values.hasOwnProperty(v2s(value));

};

Set.prototype.size = function() { return this.n; };

Set.prototype.add = function() { /* ... */ };

Set.prototype.remove = function() { /* ... */ };

Set.prototype.foreach = function(f, context) {/*...*/>;

// Далее следуют вспомогательные функции и переменные, используемые

// методами выше. Они не являются частью общедоступного API модуля и скрыты

// в области видимости функции, благодаря чему не требуется объявлять их как

// свойства класса Set или использовать символ подчеркивания в качестве префикса.

function v2s(val) { /* ... */ }

function objectld(o) { /* ... */ }

var nextId = 1;

// Общедоступным API этого модуля является функция-конструктор Set().

// Нам необходимо экспортировать эту функцию за пределы частного

// пространства имен, чтобы ее можно было использовать за ее пределами.

// В данном случае конструктор экспортируется за счет передачи его

// в виде возвращаемого значения. Он становится присваиваемым значением

// в выражении в первой строке выше, return Set;

}()); // Вызвать функцию сразу после ее объявления.

Обратите внимание, что такой прием вызова функции сразу после ее определения является характерным для языка JavaScript. Программный код, выполняемый в частном пространстве имен, предваряется текстом «(function() { » и завершается « }()); ». Открывающая круглая скобка в начале сообщает интерпретатору, что это выражение определения функции, а не инструкция, поэтому в префикс можно добавить любое имя функции, поясняющее ее назначение. В примере 9.24 было использовано имя « invocation », чтобы подчеркнуть, что функция вызывается сразу же после ее объявления. Точно так же можно было бы использовать имя « namespace », чтобы подчеркнуть, что функция играет роль пространства имен.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Дэвид Флэнаган читать все книги автора по порядку

Дэвид Флэнаган - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




JavaScript. Подробное руководство, 6-е издание отзывы


Отзывы читателей о книге JavaScript. Подробное руководство, 6-е издание, автор: Дэвид Флэнаган. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x