6.2 数值处理对象
6.2.1 Math对象
Math对象提供了大量的数学常量和数学函数。在使用Math对象时,不能使用new关键字创建对象实例,而应直接使用“对象名.成员”的格式来访问其属性或方法。下面将对Math对象的属性和方法进行介绍。
1.Math对象的属性
Math对象的属性是数学中常用的常量,如表6.2所示。
表6.2 Math对象的属性
例如:
var piValue = Math.PI; //计算圆周率 var rootofTwo = Math.SQRT2; //计算平方根
2.Math对象的方法
Math对象的方法是数学中常用的函数,如表6.3所示。
表6.3 Math对象的方法
例如,计算两个数值中的较大值,可以通过Math对象的max()函数实现,代码如下:
var larger = Math.max(value1,value2);
计算一个数的10次方,代码如下:
var result = Math.pow(value1,10);
使用四舍五入函数计算最相近的整数值,代码如下:
var result = Math.round(value);
【例6.6】 随机产生指定位数的验证码。(实例位置:资源包\TM\sl\6\06)
(1)编写随机产生指定位数的验证码函数checkCode(),该函数只有一个参数digit,用于指定产生的验证码的位数,返回值为指定位数的验证码,代码如下:
(2)编写JavaScript自定义函数deal(),调用checkCode()函数将转换后的字符串显示在指定位置,代码如下:
(3)在页面添加一个<div>标记,将其命名为result,用于显示产生的验证码,代码如下:
<div id="result"> 产生的验证码:</div>
(4)在页面的合适位置添加“生成”按钮,在该按钮的onclick事件中调用deal()函数生成验证码。代码如下:
<input name="Submit" type="button" class="go-wenbenkuang" value="生成" onclick="deal()">
运行结果如图6.9所示。
图6.9 随机生成验证码
6.2.2 Number对象
由于JavaScript使用简单数值完成日常数值的计算,因此,Number对象很少被使用。当需要访问某些常量值时,如数字的最大或最小可能值、正无穷大或负无穷大时,该对象显得非常有用。
1.创建Number对象
Number对象是原始数值的包装对象,使用该对象可以将数字作为对象直接进行访问。它可以不与new运算符一起使用,而直接作为转换函数来使用。以这种方式调用Number()时,它会把自己的参数转化成一个数字,然后返回转换后的原始数值(或NaN)。
语法格式:
numObj=new Number(value)
参数说明:
numObj:要赋值为Number对象的变量名。
value:可选项,表示新对象的数值。如果忽略value,则返回值为0。
例如,创建一个Number对象,代码如下:
var numObj1=new Number(); var numObj2=new Number(0); var numObj3=new Number(-1); document.write(numObj1+"<br>"); document.write(numObj2+"<br>"); document.write(numObj3+"<br>");
运行结果:
0 0 -1
2.Number对象的属性
(1)MAX_VALUE属性
MAX_VALUE属性用于返回Number对象的最大可能值。
语法格式:
value=Number.MAX_VALUE
参数说明:
value:存储Number对象的最大可能值的变量。
例如,获取Number对象的最大可能值。代码如下:
var maxvalue=Number.MAX_VALUE; document.write(maxvalue);
运行结果:
1.7976931348623157e+308
(2)MIN_VALUE属性
MIN_VALUE属性用于返回Number对象的最小可能值。
语法格式:
value=Number.MIN_VALUE
参数说明:
value:存储Number对象的最小可能值的变量。
例如,获取Number对象的最小可能值,代码如下:
var minvalue=Number.MIN_VALUE; document.write(minvalue);
运行结果:
5e-324
(3)NEGATIVE_INFINITY属性
NEGATIVE_INFINITY属性用于返回Number对象负无穷大的值。
语法格式:
value=Number. NEGATIVE_INFINITY
参数说明:
value:存储Number对象负无穷大的值。
例如,获取Number对象负无穷大的值,代码如下:
var negative=Number.NEGATIVE_INFINITY; document.write(negative);
运行结果:
-Infinity
(4)POSITIVE_INFINITY属性
POSITIVE_INFINITY属性用于返回Number对象正无穷大的值。
语法格式:
value=Number.POSITIVE_INFINITY
参数说明:
value:存储Number对象正无穷大的值。
例如,获取Number对象正无穷大的值,代码如下:
var positive=Number.POSITIVE_INFINITY; document.write(positive);
运行结果:
Infinity
3.Number对象的方法
(1)toString()方法
toString()方法可以把Number对象转换成一个字符串,并返回结果。
语法格式:
NumberObject.toString(radix)
参数说明:
radix:可选项。用于指定表示数字的基数,是2~36的整数。若省略该参数,则使用基数为10。但要注意,如果该参数是10以外的其他值,则ECMAScript标准允许实现返回任意值。
返回值:数字的字符串表示。
例如,将数字转换成字符串。代码如下:
运行结果:
10 10 1010 12 a
(2)toLocaleString()方法
toLocaleString()方法可以把Number对象转换为本地格式的字符串。
语法格式:
NumberObject.toLocaleString()
参数说明:
返回值:数字的字符串表示,并根据本地的规范进行格式化(可能影响到小数点或千分位分隔符采用的标点符号)。
例如,将数字转换成字符串。代码如下:
var num=new Number(10.66560); document.write(num.toLocaleString()+"<br>");
运行结果:
10.666
(3)toFixed()方法
toFixed()方法将Number对象四舍五入为指定小数位数的数字,然后转换成字符串。
语法格式:
NumberObject.toFixed(num)
参数说明:
num:必选项。用于指定小数的位数,是0~20的值(包括0和20),有些实现可以支持更大的数值范围。如果省略该参数,用0代替。
返回值:数字的字符串表示。不采用指数计数法,小数点后有固定的num位数字。如果num参数为空,默认值为0。如果num大于1e+21,则该方法只调用NumberObject.toString(),返回采用指数计数法表示的字符串。
例如,将数字的小数部分以指定位数进行四舍五入后转换成字符串,代码如下:
var num=new Number(10.25416); document.write(num.toFixed()+"<br>"); document.write(num.toFixed(0)+"<br>"); document.write(num.toFixed(1)+"<br>"); document.write(num.toFixed(3)+"<br>"); document.write(num.toFixed(7)+"<br>");
运行结果:
10 10 10.3 10.254 10.2541600
(4)toExponential()方法
toExponential()方法利用指数计数法计算Number对象的值,然后将其转换成字符串。
语法格式:
NumberObject.toExponential(num)
参数说明:
num:必选项。用于指定指数计数法中的小数位数,是0~20的值(包括0和20),个别情况下可以支持更大的数值范围。如果省略该参数,将使用尽可能多的数字。
返回值:数字的字符串表示。采用指数计数法,即小数点之前有一位数字,小数点之后有num位数字。该数字的小数部分将被舍入,必要时用0补足,以便达到指定的长度。
例如,将数字以指数计数法计算后转换成字符串,代码如下:
var num=new Number(2000000.45); document.write(num.toExponential()+"<br>"); document.write(num.toExponential(0)+"<br>"); document.write(num.toExponential(1)+"<br>"); document.write(num.toExponential(3)+"<br>"); document.write(num.toExponential(7)+"<br>");
运行结果:
2.00000045e+6 2e+6 2.0e+6 2.000e+6 2.0000004e+6
(5)toPrecision()方法
toPrecision()方法将Number对象转换成字符串,并根据不同的情况选择定点计数法或指数计数法。
语法格式:
NumberObject.toPrecision(num)
参数说明:
num:必选项。用于指定指数计数法中的小数位数,是0~20的值(包括0和20),个别情况下可以支持更大的数值范围。如果省略该参数,将使用尽可能多的数字。
返回值:数字的字符串表示,包含num个有效数字。如果num足够大,能够包括整数部分的所有数字,那么返回的字符串将采用定点计数法;否则将采用指数计数法,即小数点前有一位数字,小数点后有num-1位数字。必要时,该数字会被舍入或用0补足。
例如,根据不同的情况,使用定点计数法或指数计数法将数字转换成字符串,代码如下:
运行结果:
1.000e+4 10000.00000
6.2.3 Boolean对象
在JavaScript中经常会使用Boolean值作为条件对结果进行检测。Boolean值可以从Boolean对象中获得相关的属性和方法,也可以通过Boolean对象的相关方法将Boolean值转换成字符串。
1.创建Boolean对象
Boolean对象是JavaScript的一种基本数据类型,是一个把布尔值打包的布尔对象,可以通过Boolean对象创建新的Boolean值。
语法格式:
boolObj=new Boolean([boolValue])
参数说明:
boolObj:要赋值为Boolean对象的变量名。
boolValue:可选项,表示新对象的初始Boolean值。如果忽略boolValue,或者其值为false、0、null、NaN及空字符串,则该Boolean对象的初始值为false;否则,初始值为true。
说明
Boolean对象是Boolean数据类型的包装器。每当Boolean数据类型转换为Boolean对象时,JavaScript都隐式地使用Boolean对象,很少会显式地调用Boolean对象。
【例6.7】 创建Boolean对象。(实例位置:资源包\TM\sl\6\07)
代码如下:
BoolObj1=new Boolean(false); BoolObj2=new Boolean(0); BoolObj3=new Boolean(null); BoolObj4=new Boolean(""); BoolObj5=new Boolean(); BoolObj6=new Boolean(1); BoolObj7=new Boolean(true); document.write(BoolObj1+"<br>"); document.write(BoolObj2+"<br>"); document.write(BoolObj3+"<br>"); document.write(BoolObj4+"<br>"); document.write(BoolObj5+"<br>"); document.write(BoolObj6+"<br>"); document.write(BoolObj7+"<br>");
运行结果如图6.10所示。
图6.10 创建Boolean对象
2.Boolean对象的属性
Boolean对象有constructor和prototype两个属性,下面分别进行介绍。
(1)constructor属性
constructor属性用于对当前对象的函数进行引用。
例如,判断当前对象是否为布尔对象。代码如下:
var newBoolean=new Boolean(); if(newBoolean.constructor==Boolean) document.write("布尔型对象");
运行程序,由于对象newBoolean是布尔对象,因此页面会显示“布尔型对象”,如图6.11所示。
图6.11 判断是否为Boolean对象
(2)prototype属性
prototype属性可以为对象添加属性和方法。
例如,用自定义属性,并为其属性赋值。代码如下:
运行程序,会在页面中弹出自定义的属性值,如图6.12所示。
图6.12 弹出自定义属性值
3.Boolean对象的方法
Boolean对象有toString()和valueOf()两个方法,下面对其进行介绍。
(1)toString()方法
toString()方法用于将Boolean值转换成字符串。
语法格式:
BooleanObject.toString()
参数说明:
返回值:BooleanObject的字符串表示。
例如,将Boolean对象的值转换成字符串,代码如下:
运行结果:
true
(2)valueOf()方法
valueOf()方法用于返回Boolean对象的原始值。
语法格式:
BooleanObject.valueOf()
参数说明:
返回值:BooleanObject的字符串表示。
例如,获取Boolean对象的值,代码如下:
var newBoolean=new Boolean(); newBoolean=true; document.write(newBoolean.valueOf());
运行结果:
true