Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

function abstractmethod { throw new Error("абстрактный метод"); }

/*

* Класс AbstractSet определяет единственный абстрактный метод, contains.

*/

function AbstractSet {

throw new Error("Нельзя создать экземпляр абстрактного класса");

}

AbstractSet.prototype.contains = abstractmethod;

/*

* NotSet - конкретный подкласс класса AbstractSet.

* Элементами этого множества являются все значения, которые не являются

* элементами некоторого другого множества. Поскольку это множество

* определяется в терминах другого множества, оно не доступно для записи,

* а так как оно имеет бесконечное число элементов, оно недоступно для перечисления.

* Все, что позволяет этот класс, - это проверить принадлежность к множеству.

* Обратите внимание, что для определения этого подкласса используется метод

* Function.prototype.extendO, объявленный выше.

*/

var NotSet = AbstractSet.extend(

function NotSet(set) { this.set = set; },

{

contains: function(x) { return !this.set.contains(x); },

toString: function(x) { return "~" + this.set.toString; },

equals: function(that) {

return that instanceof NotSet && this.set.equals(that.set);

}

}

);

/*

* AbstractEnumerableSet - абстрактный подкласс класса AbstractSet.

* Определяет абстрактные методы size и foreach и реализует конкретные

* методы isEmptyO. toArrayO, to[Locale]String и equals.

* Подклассы, реализующие методы contains, size и foreach,

* получают эти пять конкретных методов даром.

*/

var AbstractEnumerableSet = AbstractSet.extend(

function {

throw new Error("Нельзя создать экземпляр абстрактного класса");

},

{

size: abstractmethod,

fоreach: abstractmethod,

isEmpty: function { return this.size == 0; },

toString: function {

var s = і = 0;

this.foreach(function(v) {

if (i++ > 0) s += ", ";

s += v;

});

return s +

},

toLocaleString : function {

var s = "{", і = 0;

this.foreach(function(v) {

if (i++ > 0) s += ", "

if (v == null) s += v; // null и undefined

  • Читать дальше
  • 1
  • ...
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: