JavaScript从入门到精通(第3版)
上QQ阅读APP看书,第一时间看更新

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">&nbsp;&nbsp;产生的验证码:</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