Дэвид Флэнаган - 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-е издание - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Дэвид Флэнаган
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Set.prototype.foreach = function(f, context) {

for(var s in this.values) // Для каждой строки в множестве

if (this.values.hasOwnProperty(s)) // Пропустить унаследов. свойства

f.call(context. this.values[s]); // Вызвать f для значения

};

// Функция для внутреннего использования. Отображает любые значения JavaScript

// в уникальные строки.

Set._v2s = function(val) {

switch(val) {

case undefined: return 'u'; // Специальные простые значения

case null: return 'n'; // отображаются в односимвольные строки.

case true: return 't';

case false: return 'f;

default: switch(typeof val) {

case 'number': return + val; // Числа получают префикс #.

case 'string': return "" + val; // Строки получают префикс ".

default: return '@' + objectId(val); // Объекты и функции - @

}

}

// Для любого объекта возвращается строка. Для разных объектов эта функция

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

// будет возвращать одну и ту же строку. Для этого в объекте о создается свойство.

// В ES5 это свойство можно сделать неперечислимым и доступным только для чтения,

function objectld(o) {

var prop = "I **objectid**|”; // Имя частного идентификац. свойства

if (!о.hasOwnProperty(prop)) // Если объект не имеет этого свойства

о[ргор] = Set._v2s.next++; // Присвоить ему след, доступ, значение

return о[ргор]; // Вернуть идентификатор

}

};

Set._v2s.next = 100; // Начальное значение для идентификаторов объектов.

9.6.2. Пример: типы-перечисления

Перечислениями называются типы, которые могут принимать конечное количество значений, объявляемых (или «перечисляемых») при определении типа.

В языке С и его производных типы-перечисления объявляются с помощью ключевого слова enum . В ECMAScript 5 enum - это зарезервированное (но не используемое) слово, оставленное на тот случай, если когда-нибудь в JavaScript будут реализованы встроенные типы-перечисления. А пока в примере 9.7 демонстрируется, как можно определить собственный тип-перечисление на языке JavaScript. Обратите внимание, что здесь используется функция inherit() из примера 6.1.

Пример 9.7 содержит единственную функцию enumeration(). Однако она не является конструктором: она не определяет класс с именем «enumeration». Но она является фабричной функцией: при каждом вызове она создает и возвращает новый класс. Ниже показано, как ее можно использовать:

// Создать новый класс Coin с четырьмя возможными значениями:

// Coin.Penny, Coin.Nickel и т. д.

var Coin = enumeration({Penny: 1, Nickel:5, Dime:10, Quarter:25});

var c = Coin.Dime; // Это экземпляр нового класса

с instanceof Coin // => true: instanceof работает

c.constructor == Coin // => true: свойство constructor работает

Coin.Quarter + 3*Coin.Nickel // => 40: значения преобразуются в числа

Coin.Dime == 10 // => true: еще одно преобразование в число

Coin.Dime > Coin.Nickel // => true: операторы отношения работают

String(Coin.Dime) + ":" + Coin.Dime // => "Dime:10": преобразов, в строку

Цель этого примера состоит в том, чтобы продемонстрировать, что классы в языке JavaScript являются более гибкими и динамичными, чем статические классы в таких языках, как C++ и Java.

Пример 9.7 Типы-перечисления в JavaScript

// Эта функция создает новый тип-перечисление. Объект в аргументе определяет

// имена и значения каждого экземпляра класса. Возвращает функцию-конструктор,

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

// исключение: его нельзя использовать для создания новых экземпляров типа.

// Возвращаемый конструктор имеет свойства, которые отображают имена в значения,

// а также массив значений values и функцию foreach() для выполнения итераций

function enumeration(namesToValues) {

// Фиктивный конструктор, который будет использоваться как

// возвращаемое значение.

var enumeration = function() { throw "Нельзя создать экземпляр класса” +

Enumeration"; };

// Перечислимые значения наследуют объект this,

var proto = enumeration.prototype = {

constructor: enumeration, // Идентификатор типа

toString: function() { return this.name; }, // Возвращает имя

valueOf: function() { return this.value; }, // Возвращает значение

toJSON: function() { return this.name; } // Для сериализации

};

enumeration.values = []; // Массив перечислимых объектов-значений

// Теперь создать экземпляры нового типа.

for(name in namesToValues) { // Для каждого значения

var е = inherit(proto); // Создать объект для его представления

e.name = name; // Дать ему имя

е.value = namesToValues[name]; // И значение

enumeration[name] = е; // Сделать свойством конструктора

enumeration.values.push(e); // И сохранить в массиве values

}

// Метод класса для обхода экземпляров класса в цикле

enumeration.foreach = function(f,с) {

for(var і = 0; і < this.values.length; i++) f.call(c,this.values[i]);

};

// Вернуть конструктор, идентифицирующий новый тип

return enumeration;

}

Типичным начальным примером использования типов-перечислений может служить реализация перечисления для представления колоды игральных карт. Пример 9.8 использует функцию enumeration) именно для этого, а также определяет классы для представления карт и колод карт. [16] Этот пример основан на примере для языка Java, написанном Джошуа Блохом (Joshua Bloch) и доступном по адресу: http://jcp.org/aboutJava/communityprocess/jsr/tiger/enum.html .)

Пример 9.8. Представление игральных карт в виде типов-перечислений

// Определение класса для представления игральной карты

function Card(suit, rank) {

this.suit = suit; // Каждая карта имеет масть

this.rank = rank; // и значение

}

// Следующие типы-перечисления определяют возможные масти и значения карт

Card.Suit = enumeration({Clubs: 1, Diamonds: 2, Hearts:3, Spades:4});

Card.Rank = enumeration({Two: 2, Three: 3, Four: 4, Five: 5, Six: 6,

Seven: 7, Eight: 8, Nine: 9, Ten: 10,

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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