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

на главную

Жанры

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

toString: function { return this.f + "..." + this.t; }

},

{ upto: function(t) { return new SimpleRange(0, t); } });

В примере 9.3 приводится более длинное определение класса. В нем создается класс, представляющий комплексные числа, и демонстрируется, как имитировать члены класса в стиле Java. Здесь все делается «вручную» - без использования функции

defineClass,
представленной выше.

Пример 9.3. Complexes: Класс комплексных чисел

/*

* Complex.js:

* В этом файле определяется класс Complex, представляющий комплексные числа.

* Напомню, что комплексные числа представляют собой сумму вещественной и мнимой части,

* где множитель і в мнимой части - это квадратный корень из -1.

*/

/*

* Функция-конструктор определяет поля экземпляра r и і

* в каждом создаваемом экземпляре.

* Эти поля хранят значения вещественной и мнимой частей комплексного числа:

* они хранят информацию, уникальную для каждого объекта.

*/

function Complex(real, imaginary) {

if (isNaN(real) || isNaN(imaginary)) // Убедиться, что аргументы - числа.

throw new ТуреЕггог; // Иначе возбудить исключение,

this.r = real; // Вещественная часть числа,

this.і = imaginary; // Мнимая часть числа.

}

/*

* Методы экземпляров класса определяются как свойства-функции объекта-прототипа.

* Методы, определяемые ниже, наследуются всеми экземплярами и обеспечивают общность

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

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

*/

// Складывает комплексное число that с текущим и возвращает сумму в виде нового объекта.

Complex.prototype.add = function(that) {

return new Complex(this.r + that.r, this.і + that.і);

};

// Умножает текущее комплексное число на число that и возвращает произведение.

Complex.prototype.mul = function(that) {

return new Complex(this.r * that.r - this.і * that.і, this.r * that.і + this.і * that.r);

}:

// Возвращает вещественный модуль комплексного числа. Он определяется

// как расстояние до числа на комплексной плоскости от точки (0.0).

Complex.prototype.mag = function {

return Math.sqrt(this.r*this.r + this.i*this.i);

};

// Возвращает комплексное число с противоположным знаком.

Complex.prototype.neg = function { return new Complex(-this.r, -this.i); };

// Преобразует объект Complex в строку в понятном формате.

Complex.prototype.toString = function {

return "{" + this.r + "," + this.i + '}';

};

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

Complex.prototype.equals = function(that) {

return that != null && // должно быть определено, не равно null

that.constructor === Complex && // и быть экземпляром Complex

this.r === that.r && this.i === that.i; // и иметь те же значения.

};

/*

* Поля класса (например, константы) и методы класса определяются как свойства

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

* ключевое слово this: они выполняют операции только со своими аргументами.

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

Геном хищника. Книга седьмая

Гарцевич Евгений Александрович
7. Я - Легенда!
Фантастика:
боевая фантастика
рпг
фэнтези
попаданцы
5.00
рейтинг книги
Геном хищника. Книга седьмая

Архонт

Прокофьев Роман Юрьевич
5. Стеллар
Фантастика:
боевая фантастика
рпг
7.80
рейтинг книги
Архонт

Первый удар (сборник)

Уланов Андрей Андреевич
Фантастика:
научная фантастика
5.71
рейтинг книги
Первый удар (сборник)

Геном хищника. Книга третья

Гарцевич Евгений Александрович
3. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Геном хищника. Книга третья

Лебединая Дорога (сборник)

Семёнова Мария Васильевна
Приключения:
исторические приключения
9.04
рейтинг книги
Лебединая Дорога (сборник)

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

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

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

Наследие Маозари 9

Панежин Евгений
9. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
сказочная фантастика
6.25
рейтинг книги
Наследие Маозари 9

Локки 4 Потомок бога

Решетов Евгений Валерьевич
4. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Локки 4 Потомок бога

Автобиография

Твен Марк
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
Автобиография

Геном хищника. Книга девятая

Гарцевич Евгений Александрович
9. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Геном хищника. Книга девятая

Гримуар темного лорда VI

Грехов Тимофей
6. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда VI

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Слово мастера

Лисина Александра
11. Гибрид
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Слово мастера