2.3 常用对象
JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。
一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象。比如要设定网页的背景颜色,所针对的对象就是document,所用的属性名是bgcolor,如document.bgcolor="blue",就是表示使背景的颜色为蓝色。
下面介绍一些JavaScript的常用内置对象。
2.3.1 字符串对象
1. 转义字符串对象
在JavaScript中,有一些特殊的字符串对象,主要包括引号、回车符号、换行,等等。下面列出这些字符的实现方法。
双引号,\"
单引号,\'
反斜杠,\\
退格,\b
Tab,\t
换行,\n
回车,\r
走纸换页,\f
下面的语句就可以实现以上的特殊字符,那在编写JavaScript程序过程中,通过反斜杠加上特殊的字符就实现了特殊字符在页面中表现的方法,请看下面的示例。
例2-18
<html> <head> <title></title> </head> <body> <p align="left">转义字符的引用</p> <script language="javascript"> <!— yuju="大哥说\"我错了\"" Alert(yuju) //--> </script> </body> </html>
显示效果如图2-16所示。
图2-16 转义字符双引号的使用
2. 字符串对象的定义
var s = "这是我的字符串对象";
定义了s这个字符串之后,就有了一个字符串对象,可以访问它的长度属性(length),这个属性不需要定义,它是一个内置的属性。访问的方式如下:
alert(s.length)
下面的例子使用了字符串对象的长度属性来计算字符串的长度。
例2-19
<html> <head> <script languge="javascript"> var txt="Hello China!" alert(txt.length) </script> </head> </html>
输出结果为12,如图2-17所示。
图2-17 字符串长度
3. 字符串对象的方法
■ toUpperCase()方法
下面的例子使用字符串对象的toUpperCase()方法将字符串转换为大写。
例2-20
<html> <head> <script languge="javascript"> var txt="Hello world!" document.write(txt.toUpperCase()) </script> </head> </html>
输出为“HELLO WORLD!”,如图2-18所示。
图2-18 字符串转换为大写
■ toLowerCase
toLowerCase() 方法用于把字符串转换为小写。请看下面的例2-21。
例2-21
<html> <head> <title></title> </head> <body> <p align="left">转义字符的引用</p> <script language="javascript"> <!-- yuju="THIS IS A BIG DOG" document.writeln("大写:") document.writeln(yuju) re=yuju.toLowerCase() document.writeln("<br>小写:"+re) //--> </script> </body> </html>
显示结果分别为大写和小写的“THIS IS A BIG DOG”和“this is a big dog”,如图2-19所示。
图2-19 字符串转换为小写
■ “+”加法
该方法将两个字符串连接起来,在实际的应用中常涉及到,请看下面的例2-22。
例2-22
<html> <head> <title></title> </head> <body> <p align="left">转义字符的引用</p> <script language="javascript"> <!-- yuju="大哥说错了" cd="小李也不对" document.write(yuju+cd) //--> </script> </body> </html>
显示结果为“大哥说错了小李也不对”,如图2-20所示。
图2-20 字符串相加
■ charAt
该方法从字符串中返回一个字符,这个方法在应用的时候,通常会设置一个起始位置的参数,然后传回位于该字符串对象位置的字符值。在使用的时候,系统认为字符串起始位置为0。
该方法的调用方式如下:
String.charat(index)
其中,index表示返回的字符位置。
请看下面的例子。
例2-23
<html> <head> <title></title> </head> <body> <p align="left">转义字符的引用</p> <script language="javascript"> <!-- yuju="妈妈说好了" cd=yuju.charAt(2) document.write(cd) //--> </script> </body> </html>
显示结果为字符位置为2的“说”,如图2-21所示。
图2-21 返回指定字符
■ indexOf
该方法从一个特定的位置开始查找设置的字符、返回一个字符或是字符串上起始位置值,如果在特定位置找不到用户设置的字符串对象,则返回-1,这在利用JavaScript设置查找数据的格式化过程中非常有用。在后面的综合部分,系统常利用该方法来完成检索和数据检验方面的工作。这里只简单介绍一下其用法。
string1.indexOf(string2,index)
其中,string2表示需检索的字符串值,是必需的;index表示可选的整数参数,规定在字符串中开始检索的位置,它的合法取值是0~string1object.length-1。
例2-24
<html> <head> <title></title> </head> <body> <p align="left">转义字符的引用</p> <script language="javascript"> <!-- yuju="字符串对象" cd="对象" re=yuju.indexOf(cd) document.write(re) ls=yuju.indexOf(cd,5) document.write("<br>"+ls) //--> </script> </body> </html>
显示结果为3和-1,如图2-22所示。
图2-22 返回字符串位置值
■ lastindexOf
该方法的使用与上面的indexOf的使用一样,只是该方法从字符串对象的尾部开始搜索。将上面的例子稍加改动,看看这两个方法的不同之处。
例2-25
<html> <head> <title></title> </head> <body> <p align="left">转义字符的引用</p> <script language="javascript"> <!-- yuju="字符串对象" cd="对象" re=yuju.lastindexOf(cd) document.write(re) //--> </script> </body> </html>
显示结果为3,如图2-23所示。
图2-23 lastindexOf方法
■ substring
该方法为字符串截取方法,在设置的时候一般会设置两个参数指定截取的位置,然后将两个参数间的字符串返回给设置的变量。当两个参数相等的时候,就返回一个空字符串。在涉及的运行中,一般可以不管参数的大小和前后的位置,它截取的顺序都是从最小的参数开始,截取到最大参数位置。如果没有指定最后的参数,系统默认截取到字符串对象的末尾。
该方法的调用格式如下:
string.substring(start,stop)
其中,start必须有,是一个非负的整数,规定要提取的字符串的第一个字符在string中的位置;stop可选,是一个非负的整数,比要提取的字符串的最后一个字符在string中的位置多1,如果省略该参数,那么返回的字符串会一直到字符串的结尾。
例2-26
<html> <head> <title></title> </head> <body> <p align="left">转义字符的引用</p> <script language="javascript"> <!-- yuju="字符串对象" cd="对象" re=yuju.substring(3,5) document.writeln(re) //--> </script> </body> </html>
显示结果为“对象”,如图2-24所示。
图2-24 substring方法
■ anchor
利用该方法在页面中创建和显示一个HTML超文本目标。在利用该方法的时候,必须在文档中建立一个锚点,然后调用write方法在文档中写出该链接锚点,达到在页面中快速定位的目的。
该方法的调用格式如下:
string.anchor(anchorname)
例2-27
<html> <head> <title></title> </head> <body> <p align="left">字符的<a href="#anc">引用</a></p> <script language="javascript"> <!-- zifu="this is anchor" anc=zifu.anchor("anc") document.write("anc") //--> </script> </body> </html>
显示结果如图2-25所示。
图2-25 anchor方法
■ big
该方法将设置的字符转换为大字体格式,在功能的实现上,与HTML语言的<big>一样。在页面中显示时,会将设置的字符串对象大号显示。
请看下面的示例。
例2-28
<html> <head> <title></title> </head> <body> <p align="left">字符的引用</p> <script language="javascript"> <!-- zifu="您好" document.write(zifu) anc=zifu.big("anc") document.write(anc) //--> </script> </body> </html>
显示结果如图2-26所示。
图2-26 big方法
■ bold
该方法将设置的文本粗体显示。在功能的实现中与HTML标签中的<b>相似。这些方法实质上是JavaScript格式的控制语言。
该方法的应用格式如下:
String.bold()
请看下面的示例。
例2-29
<html> <head> <title></title> </head> <body> <p align="left">字符的引用</p> <script language="javascript"> <!-- zifu="字符的引用" anc=zifu.bold() document.write(anc) //--> </script> </body> </html>
显示结果如图2-27所示。
图2-27 bold方法
下面看看其他的一些格式变化:
<html> <head> <title></title> </head> <body> <p align="left">字符的引用</p> <script language="javascript"> <!-- zifu="字符的引用" anc1=zifu.bold() document.write(anc1) anc2=zifu.italics() document.write("<br>"+anc2) anc3=zifu.sub() document.write("<br>"+anc3) anc4=zifu.sup() document.write("<br>"+anc4) anc5=zifu.fontsize(7) document.write("<br>"+anc5) anc6=zifu.fontcolor("red") document.write("<br>"+anc6) //--> </script> </body> </html>
显示的格式有多种,如图2-28所示。
图2-28 字符格式引用
字符串对象的属性和方法还有很多,这里就不一一讲述了,大家可以查看相关的对象手册。
2.3.2 Date对象
Date对象保存从1970年1月1日0时0分0秒0毫秒到记录时间的毫秒值。在JavaScript中创建Date对象的语法有如下三种。
1. 无参创建
var dt=new Date();
当使用这种方式创建的时候,日期对象保存的是系统的当前时间。
2. 通过值创建
var dt=new Date(dateVal);
这种方式表示创建一个指定时间,dateVal可以是一个数字,也可以是一个字符串。如果是数字,表示日期是从1970年1月1日0时0分0秒0毫秒加上dateVal;如果是字符串,如“2008-8-8”(也可以是 d1 = new Date("8-8, 2008 11:13:00")),表示指定的时间,当然使用这种方式必须符合日期的格式。
3. 通过多个参数创建
var dt=new Date(year,month,date[,hours[,minutes[,seconds[,ms]]]]);
其中:
■ year:必选项。完整的年份,比如“1976”(而不是76)。
■ month:必选项。表示的月份,0~11之间的整数(1月至12月)。
■ date:必选项。表示日期,1~31之间的整数。
■ hours:可选项。如果提供了minutes参数则必须给出。表示小时,0~23的整数(午夜到11pm)。
■ minutes:可选项。如果提供了seconds参数则必须给出。表示分,0~59的整数。
■ seconds:可选项。如果提供了milliseconds参数则必须给出。表示秒,0~59的整数。
■ ms:可选项。表示毫秒,0~999的整数。
Date对象常用的方法可以分为三组,分别用于得到日期相应部分的值(表2-1)、设置日期相应部分的值(表2-2)和将日期转换为字符串(表2-3)。
表2-1 get组方法
表2-2 set组方法
表2-3 to组方法
通过下面的示例了解Date对象的基本用法。
例2-30
<html> <head> <title>单击事件</title> <script type="text/javascript"> function disDate(){ //创建日期对象,得到当前时间 var now = new Date(); //得到年、月、日、时、分、秒、毫秒、星期数 var year = now.getFullYear(); var month = now.getMonth()+1; var date = now.getDate(); var hour = now.getHours(); var minute = now.getMinutes(); var second = now.getSeconds(); var ms = now.getMilliseconds(); var day = now.getDay(); var strDay = ""; switch(day){ case 1: strDay = "星期一"; break; case 2: strDay = "星期二"; break; case 3: strDay = "星期三"; break; case 4: strDay = "星期四"; break; case 5: strDay = "星期五"; break; case 6: strDay = "星期六"; break; case 0: strDay = "星期天"; break; } var nowStr = year + "年" + month + "月" + date + "日 " + hour + "时" + minute + "分" + second + "秒" + ms + "毫秒 "+strDay; //年分加1 now.setFullYear(year+1); var nextStr = now.toLocaleString(); alert("当前时间是:"+nowStr+"\n\n一年后的今天是:"+nextStr); } </script> </head> <body> <input type="button" value="一年后的今天是?" onClick="disDate()" /> </body> </html>
运行效果如图2-29所示,单击按钮后效果如图2-30所示。
图2-29 Date对象的使用(一)
图2-30 Date对象的使用(二)
2.3.3 Math对象
Math对象用于复杂的数据计算,JavaScript中Math对象常用属性如表2-4所示、常用方法如表2-5所示。
表2-4 Math对象常用属性
表2-5 Math对象常用方法
例2-31通过计算圆的周长和面积演示了Math对象属性和方法的使用。
例2-31
…… <script type="text/javascript"> function calc(){ //接受用户输入 var r = prompt("请输入圆的半径:"); //计算周长 var zc = 2 * Math.PI * r; //计算面积 var mj = Math.PI * Math.pow(r,2); alert("半径为"+r+"的圆的周长是:" + zc + "\n\n半径为" + r + "的圆的面积是:" + mj); } </script> </head> <body> <input type="button" value="圆周长和面积计算器" onClick="calc()" /> </body> </html>
在例中使用了一个prompt函数,用于接受用户输入圆的半径,当运行此页面的时候会出现如图2-31所示的效果,单击按钮出现如图2-32所示的对话框,当输入半径后得到最后运算结果,如图2-33所示。
图2-31 Math对象的使用(一)
图2-32 Math对象的使用(二)
图2-33 Math对象的使用(三)