Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

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

*/

// Ниже определяется несколько полей класса, хранящих предопределенные

// комплексные числа. Их имена состоят исключительно из заглавных символов,

// чтобы показать, что они являются константами.

// (В ECMAScript 5 эти свойства можно было бы сделать доступными только для чтения)

Complex.ZERO = new Complex(0,0);

Complex.ONE = new Complex(1,0);

Complex.I = new Complex(0,1);

// Следующий метод анализирует строку в формате, возвращаемом методом

// экземпляра toString, и возвращает объект Complex или возбуждает исключение ТуреЕггог.

Complex.parse = function(s) {

try { // Предполагается, что анализ пройдет успешно

var m = Complex._format.exec(s); // Регулярное выражение

return new Complex(parseFloat(m[1]), parseFloat(m[2]));

} catch (x) { // Возбудить исключение в случае неудачи

throw new TypeError("Строка + s + "' не может быть преобразована” +

в комплексное число.");

}

};

// "Частное" поле класса, используемое методом Complex.parse.

// Символ подчеркивания в его имени указывает, что оно предназначено

// для внутреннего использования и не является частью общедоступного API класса.

Complex._format = /^\{([^,]+),([^}]+)\}$/;

Определение класса Complex, представленное в примере 9.3, позволяет использовать конструктор, поля экземпляра, методы экземпляров, поля класса и методы класса, как показано ниже:

var с = new Complex(2,3); // Создать новый объект с помощью конструктора

var d = new Complex(c.i.c.r); // Использовать свойства экземпляра с

c.add(d).toString; // => "{5.5}": использовать методы экземпляров

// Более сложное выражение, в котором используются метод и поле класса

Complex.parse(c.toStringO). // Преобразовать с в строку и обратно,

add(c.neg). // сложить с числом с противоположным знаком,

equals(Complex.ZERO) // и результат всегда будет равен нулю

Несмотря на то что язык JavaScript позволяет имитировать члены классов в стиле языка Java, тем не менее в Java существует множество особенностей, которые не поддерживаются классами в языке JavaScript. Во-первых, в методах экземпляров классов в языке Java допускается использовать поля экземпляра, как если бы они были локальными переменными, - в Java нет необходимости предварять их ссылкой

this
. В языке JavaScript такая возможность не поддерживается, но похожего эффекта можно добиться с помощью инструкции with (хотя это и не рекомендуется):

  • Читать дальше
  • 1
  • ...
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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