Чтение онлайн

на главную - закладки

Жанры

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,
а также показывает, как определить метод чтения и как проверить возможность расширения объекта.

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

Одержимая (авторский сборник)

Дяченко Марина и Сергей
Фантастика:
фэнтези
научная фантастика
7.80
рейтинг книги
Одержимая (авторский сборник)

Ну, здравствуй, Герой!

Француз Михаил
2. Здравствуй, Мир!
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Ну, здравствуй, Герой!

Древесный маг Орловского княжества 9

Павлов Игорь Васильевич
9. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 9

Базис

Владимиров Денис
7. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Базис

Наномашины, наследник! Том 9

Новиков Николай Васильевич
9. Первый среди карапузов
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наномашины, наследник! Том 9

Приказано выжить!

Малыгин Владимир
1. Другая Русь
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.09
рейтинг книги
Приказано выжить!

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Главбухша

Романов Владислав Иванович
Любовные романы:
остросюжетные любовные романы
5.00
рейтинг книги
Главбухша

Ваше Сиятельство 3

Моури Эрли
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 3

Прапорщик. Назад в СССР. Книга 7

Гаусс Максим
7. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 7

Кодекс Охотника. Книга XXIII

Винокуров Юрий
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXIII

Кодекс Охотника. Книга ХХ

Винокуров Юрий
20. Кодекс Охотника
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга ХХ

Законы Рода. Том 3

Мельник Андрей
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Туполев

Бодрихин Николай Георгиевич
1327. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Туполев