JavaScript. Подробное руководство, 6-е издание
Шрифт:
throw new Error("Нельзя создать экземпляр абстрактного класса");
},
{
add: abstractmethod,
remove: abstractmethod,
union: function(that) {
var self = this;
that.foreach(function(v) { self.add(v); });
return this;
},
intersection: function(that) {
var self = this;
this.foreach(function(v){
if(!that.contains(v)) self.remove(v);
});
return this;
},
difference: function(that) {
var self = this;
that.foreach(function(v) { self.remove(v); });
return this;
}
});
/*
* ArraySet -
конкретный подкласс класса AbstractWritableSet.
* Представляет множество элементов как массив значений и реализует линейный
* поиск в массиве в своем методе contains. Поскольку алгоритм метода containsO
* имеет сложность 0(п) вместо 0(1), данный класс следует использовать только
* для создания относительно небольших множеств.
* Обратите внимание, что эта реализация опирается на методы класса Array
* indexOfO и forEach, которые определяются стандартом ES5.
*/
var ArraySet = AbstractWritableSet.extend(
function ArraySet {
this.values = [];
this.add.apply(this, arguments);
},
{
contains: function(v) {
return this.values.indexOf(v) != -1;
},
size: function {
return this.values.length;
},
foreach: function(f.c) {
this.values.forEach(f, c);
},
add: function {
for(var
і = 0; і < arguments.length; i++) {
var arg = arguments[i];
if (Ithis.contains(arg)) this.values.push(arg);
}
return this;
},
remove: function {
for(var і = 0; і < arguments.length; i++) {
var p = this.values.indexOf(arguments[i]);
if (p == -1) continue;
this.values.splice(p, 1);
)
return this;
}
}
);
9.8. Классы в ECMAScript 5
Стандарт ECMAScript 5 добавляет методы, позволяющие определять атрибуты свойств (методы чтения и записи, а также признаки доступности для перечисления, записи и настройки) и ограничивать возможность расширения объектов. Эти методы были описаны в разделах 6.6, 6.7 и 6.8.3 и могут пригодиться при определении классов. В следующих подразделах демонстрируется, как использовать новые возможности ECMAScript 5 для повышения надежности своих классов.
9.8.1. Определение неперечислимых свойств
Класс
Set
, представленный в примере 9.6, вынужден использовать уловку, чтобы обеспечить возможность сохранения объектов: он добавляет свойство «object id» ко всем объектам, добавляемым в множество. Если позднее в каком-то другом месте программы будет выполнен обход свойств этого объекта с помощью цикла for/in
, это свойство будет обнаружено. Стандарт ECMAScript 5 позволяет исключить такую возможность, сделав свойство неперечислимым. В примере 9.17 демонстрируется, как это сделать с помощью Object.defineProperty,
а также показывает, как определить метод чтения и как проверить возможность расширения объекта.
Поделиться:
Популярные книги
Последний реанорец. Том I и Том II
1. Высшая Речь
Фантастика:
фэнтези
7.62
рейтинг книги
Хозяин Теней
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
На границе империй. Том 10. Часть 6
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Мастер Трав III
3. Мастер Трав
Фантастика:
фэнтези
рпг
фантастика: прочее
попаданцы
5.75
рейтинг книги
Лекарь Империи 7
7. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
попаданцы
5.00
рейтинг книги
Чехов книга 3
3. Адвокат Чехов
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Газлайтер. Том 6
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Третий. Том 3
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Страж Кодекса. Книга VI
6. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Перешагнуть пропасть
1. Перешагнуть пропасть
Фантастика:
боевая фантастика
космическая фантастика
8.38
рейтинг книги
Наномашины, Кошмар Академии! Том 10
10. Первый среди карапузов
Фантастика:
аниме
попаданцы
5.00
рейтинг книги
Ким
Приключения:
исторические приключения
7.62
рейтинг книги
Его звали Тони. Книга 5
5. Щенки косуль
Фантастика:
городское фэнтези
технофэнтези
попаданцы
7.00
рейтинг книги
Эпоха Опустошителя. Том V
5. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00