Создание объекта Number
Как уже говорилось выше, в JavaScript определены так называемые простые типы данных: числовые, строковые и булевские. В отличие от объектов, значения простым переменным задаются с помощью операций присваивания, и для них существует строго заданный набор операций (арифметических, строковых или логических). Однако для простых типов часто бывает необходимым, как и для объектных типов, определить некоторые свойства (например, длину строки) и функции (например, метод определения символа в заданной позиции строки).
Для таких целей в JavaScript, как и в других объектно-ориентированных языках, создаются объекты – оболочки над простыми типами этих языков.
Объектной оболочкой над числовыми типами данных в JavaScript является объект Number, создаваемый с помощью предложения:
var имя-переменной = new Number(значение);
При прямом вызове функции-конструктора Number:
var имя-переменной = Number(значение);
создается числовая переменная, а не числовой объект.
Если значение является правильным строковым представлением числа, строка будет преобразована в число и переменной с именем имя-переменной будет присвоено значение числа. В противном случае переменной будет присвоено значение NaN.
|
|
где имя-переменнной – имя переменной типа Number, а значение – строка. Можно также
Для объекта Number определены следующие свойства:
· MAX_VALUE – максимальное число (»1,79×10308);
· MIN_VALUE – минимальное число (»5,00×10-324);
· NaN – специальное нечисловое значение (Not a Number);
· NEGATIVE_INFINITY – значение, меньшее MIN_VALUE, которое трактуется как отрицательная бесконечность;
· POSITIVE_INFINITY – значение, большее MAX_VALUE, которое трактуется как положительная бесконечность.
Все свойства являются статическими, т.е. при их использовании задается имя типа – Number, а не имя созданного объекта.
Свойство Number.NaN имеет значение, отличное от любого числового значения, а также от значения NaN, поэтому его нельзя использовать для проверки, имеет ли переменная нечисловое значение – для этой цели необходимо использовать функцию isNaN()(см. 4.14.11.3.1). Свойство Number.NaN можно использовать только для присвоения переменной нечислового значения.
Пример 4.4.47. Использование свойств объекта Number:
1. // Ввод значения a как строки
aString = prompt("Введите a: ","");
// Преобразование a в число
a = new Number(aString);
b = 5.6e295; // Задание значения b
// Если значение a - числовое
if(!isNaN(a))
{
// Определение c - произведения a на b
c = a * b;
// Если c больше максимального значения
if(c > Number.MAX_VALUE)
// Вывод сообщения об ошибке
alert("Значение c больше максимального значения");
else
// Вывод значения c
alert("c=" + c);
// Если c равно положительной бесконечности
|
|
if(a * b == Number.POSITIVE_INFINITY)
// Вывод сообщения об ошибке
alert("Значение c - положительная бесконечность");
}
else
// Вывод сообщения об ошибке
alert("Значение a '" + aString + "' - не число");
Этот фрагмент вычисляет произведение двух числовых переменных – a и b. Поскольку b имеет большое значение, выполняется проверка превышения произведением максимального значения и его равенства положительной бесконечности.
Вывод в случае, когда произведение превышает максимальное значение и равно положительной бесконечности, имеет следующий вид:
2. // Присвоение значения переменной x
x = -5;
// Если x < 0
if(x <= 0)
// x – не число
x = Number.NaN;
…
// Если x не число
if(isNaN(x))
// Вывод сообщения об ошибке
alert("Неверное значение x");
В этом фрагменте выполняется проверка значения переменной x, которой перед этим было присвоено значение -5. Поскольку значение x – отрицательное, ей присваивается значение NaN. В дальнейшем для проверки этой переменной можно использовать функцию isNaN().
Вывод этого фрагмента имеет следующий вид: