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: они выполняют операции только со своими аргументами.
Поделиться:
Популярные книги
Солнечный корт
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
О, мой бомж
1. Несвятая троица
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Возвышение Меркурия. Книга 2
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Вы не прошли собеседование
1. Укротить миллионера
Любовные романы:
короткие любовные романы
5.00
рейтинг книги
Метаморфозы Катрин
Фантастика:
фэнтези
8.26
рейтинг книги
Эволюция мага
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Попаданка для Дракона, или Жена любой ценой
Любовные романы:
любовно-фантастические романы
7.17
рейтинг книги
Истинная поневоле, или Сирота в Академии Драконов
3. Академия Драконов, или Девушки с секретом
Любовные романы:
любовно-фантастические романы
6.37
рейтинг книги
Сумеречный Стрелок 5
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Переиграть войну! Пенталогия
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Волков. Гимназия №6
1. Волков
Фантастика:
попаданцы
альтернативная история
аниме
7.00
рейтинг книги
Картофельное счастье попаданки
Фантастика:
фэнтези
5.00