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

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

Жанры

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: они выполняют операции только со своими аргументами.

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

Иной. Том 1. Школа на краю пустыни

Amazerak
1. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.75
рейтинг книги
Иной. Том 1. Школа на краю пустыни

Инженер Петра Великого 3

Гросов Виктор
3. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 3

План битвы

Ромов Дмитрий
5. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
План битвы

Газлайтер. Том 16

Володин Григорий Григорьевич
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 16

Барон

Первухин Андрей Евгеньевич
5. Ученик
Фантастика:
фэнтези
5.60
рейтинг книги
Барон

Я все еще граф. Книга IX

Дрейк Сириус
9. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я все еще граф. Книга IX

Эммануэль

Арсан Эммануэль
1. Эммануэль
Любовные романы:
эро литература
7.38
рейтинг книги
Эммануэль

Бастард Бога (Дилогия)

Матвеев Владимир
Фантастика:
альтернативная история
5.11
рейтинг книги
Бастард Бога (Дилогия)

Волкодав

Семёнова Мария Васильевна
1. Волкодав
Фантастика:
фэнтези
героическая фантастика
9.46
рейтинг книги
Волкодав

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Ведун

Сухов Александр Евгеньевич
1. Второй шанс
Фантастика:
фэнтези
боевая фантастика
альтернативная история
5.00
рейтинг книги
Ведун

Неучтенный элемент. Том 9

NikL
9. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 9

Первый среди равных. Книга IV

Бор Жорж
4. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга IV

Базис

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