资源预览内容
第1页 / 共51页
第2页 / 共51页
第3页 / 共51页
第4页 / 共51页
第5页 / 共51页
第6页 / 共51页
第7页 / 共51页
第8页 / 共51页
第9页 / 共51页
第10页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第3章 JavaScript的常用对象,上一章向读者介绍了JavaScript的基本知识,在实际编码过程中,还会经常用到这样一些对象:他们由JavaScript语言本身提供或者由执行JavaScript的浏览器提供,他们包含丰富的内置属性和方法。灵活运用这些对象,可以使JavaScript的行为更丰富,功能更强大,也可以使编码更简单。下面向读者一一介绍。,3.1 保存多个数据元素的容器:Array对象,在上一章已经向读者介绍了JavaScript的数组。数组是一种数据类型,它包含了被编码的值。每个编码的值称为数组的一个元素,编码被称作下标。每个元素都可以存储任意数据类型的值,同一个数组的不同元素,可以具有不同的数据类型,这点和强类型语言如Java、C+等不同。接下来向读者介绍数组的对象的一些常用方法。,3.1.1 数组的创建,在2.2.6中已经向读者介绍了数组的2种创建方式,即数组直接量创建数组和利用Array()构造函数来创建数组。参考下面的示例代码。 /直接量创建数组 var a = 0,1,2,abc,new Object(); var b = ;/空数组 var c = 123,ab,2,3,22;/嵌套的数组 /Array构造函数创建数组 var d = new Array(10);/10个元素的数组 var e = new Array(0,1,2,abc); var f = new Array(123,new Array(ab,2),3,22);,3.1.2 得到数组的长度,Array对象提供了一个属性length,让程序可以得到数组中所包含的元素的个数,即数组的长度。如有一数组a,则数组的长度为a.length,示例代码如下所示。 var a = 1,2,abc; var b = a.length;/b = 3,3.1.3 添加、删除和替换数组元素,对数组最常用的操作,就是添加、删除或者替换数组元素。添加数组元素可以使用unshift方法或者push方法。使用数组的unshift方法可以将一个新的元素添加到数组的开头,数组中所有原有元素都往后移动一位,数组长度增加1。unshift方法的使用示例如下所示。 var a = 1,2,3,4,5; a.unshift(0);/a = 0,1,2,3,4,5 var b = new Array(abc,test); b.unshift(yes); b.unshift(32);/b = 32,yes,abc,test,3.1.4 得到数组片段,利用Array对象的slice方法,可以得到数组的一个片段,或者说子数组。它的两个参数指定了要返回的数组片段的起始点。数组片段由slice方法第一个参数指定位置开始,到第二个参数指定位置结束的所有元素组成,但不包含第二个参数指定位置的元素。如果省略掉第二个参数,则会返回从第一个参数指定位置的元素到数组结束的所有元素。,3.1.5 反转数组,利用Array对象的reverse方法可以将数组所有元素反转,示例如下所示。 var a = 1,2,3,4,5; a.reverse();/ a = 5,4,3,2,1,3.1.6 将数组转换成字符串,利用Array对象的join方法可以将数组的所有元素使用指定的字符串连接成一个新的字符串。Join方法可以接受一个参数,如果参数被提供,则使用改参数提供的字符串来分隔和连接数组的所有元素到新的字符串,如果参数没有被提供,则默认使用“,”。join方法使用示例,如下所示。 var a = 1,2,3,4,5; a.join();/返回1,2,3,4,5 a.join(-);/返回1-2-3-4-5 a.join(*);/返回1*2*3*4*5,3.1.7 数组元素的排序,利用Array对象的sort方法可以对数组的元素进行排序。当sort方法不带参数执行时,在排序的时候会将数组元素转换成字符串,并按照字符串首个字符的ASCII码从小到大排列,如果数组含有未定义的元素,则这些元素会被放到数组末尾。一个使用sort方法排序的例子如下所示。 var a = d,csd,32,1,ef1,2as; a.sort();/返回1,2as,32,csd,d,ef1,3.2 字符串的处理:String对象,在2.2.2一节中已经向读者介绍了字符串的一些知识,在本节中将向读者介绍String对象的一些常用属性和方法。,3.2.1 获取字符串的长度,同Array对象类似,String对象也有一个表示字符串长度的length属性,而与Array对象的length属性所不同的是,String对象的length属性表示的是字符串所包含的字符数,而且不能被人为的修改。使用length属性获取字符串长度的例子如下所示。 var a = ; a.length;/返回0 var b = Ajax; b.length;/返回4 Ajax study.length;/返回10,3.2.2 字符串的截取,用Array对象的slice方法,可以获得一个数组的段落,String对象也提供了substring方法来截取一段字符串的片段。同slice方法一样,substring方法可以接受两个参数来指定截取范围,当第二个参数被省略时,默认截取到字符串的结尾。使用substring方法截取字符串的例子如下所示。 var a = I love ajax; var b = a.substring(2,4);/ b = lo var c = a.substring(2);/ c = love ajax,3.2.3 字符串的替换,使用String对象的replace方法可以将字符串中指定的内容替换成新的内容并返回一个新的字符串。replace方法接受2个参数,第一个为需要被替换的子字符串,第二个为替换的内容。当执行replace方法时,程序会在字符串中查找所有与第一个参数相符的片段,并替换为第二个参数指定的内容。replace方法完成替换后会返回一个新的字符串,而不会对原字符串产生影响。下面是一些使用replace方法的示例。 var a = I love ajax; var b = a.replace( ,_);/ b = I_love_ajax var c = a.replace(a,o);/ c = I love ojox var d = a.replace(ajax,AJAX);/ d = I love AJAX / a = I love ajax,3.2.4 大小写转换,String对象提供了两个方法来作大小写转换的操作:toLowerCase方法和toUpperCase方法。toLowerCase方法将字符串中的所有大写字母转换为小写字母,toUpperCase则将字符串中所有的小写字母转换为大写字母。但是这两个方法并不改变原有字符串,而是转换后返回一个新的字符串。一个大小写转换的示例如下所示。 var a = I love ajax; var b = a.toUpperCase(); var c = a.toLowerCase();,3.2.5 将字符串转换成数组,使用split方法可以将字符串根据指定的子字符串分割成若干元素,并将这些元素按照顺序在字符串中的先后排列并返回一个包含这些元素的数组。split方法可以理解为Array对象的join方法的逆运算。split方法使用示例如下所示。 var a = 00-12-13-DF-3A; var b = a.split(-);/ b = 00,12,13,DF,3A var c = I love ajax; var d = c.split( );/ d = I,love,ajax var e = a=1/ e = a=1,b=2,c=3,3.2.6 拼接字符串的优化方法,JavaScript的字符串更像是一个常量,其值是不可以被更改的,在进行字符串的连接操作的时候,实际上是创建了新的字符串而非在原有字符串的基础上进行修改,所以当进行大量字符串拼接的操作的时,会带来性能损耗的问题,一般的解决办法是用结合数组的join方法来达到拼接字符串的效果。,3.3 正则表达式:RegExp对象,在上一节中,向读者介绍了String对象的一些常用属性和方法,这一节向大家介绍同样使用广泛,并且和String对象紧密关联的正则表达式对象:RegExp。正则表达式是一个描述字符模式的对象,或者说是用某种模式去匹配一类字符串的一个公式。很多程序设计语言都支持正则表达式,JavaScript中的正则表达式,由RegExp对象表示。,3.3.1 创建正则表达式,创建一个正则表达式,可以使用RegExp构造函数和直接量两种方式。就像字符串直接量被包含在一对引号中一样,正则表达式直接量被包含在一对斜线(/)中。例如,创建一个正则表达式的方法如下所示。 var reg1 = new RegExp(d+); var reg2 = new RegExp(1-9a-zA-Z*$); var reg3 = /d+/; var reg4 = /1-9a-zA-Z*$/;,3.3.2 正则表达式的语法规则,正则表达式由字符直接量、元符号和各种转义序列组成。字符直接量匹配的是它本身,除了字母字符和数字外,还可以通过转义符()开头的转义序列来支持一些非字母字符。,3.3.3 正则表达式的属性,每个RegExp对象都有5个属性。属性source是一个只读的字符串,它存放的是正则表达式的文本,示例代码如下所示。 var reg = new RegExp(1-9a-zA-Z*$,im); var text = reg.source;/ text = 1-9a-zA-Z*$,3.3.4 用于模式匹配的String方法,在3.2.3一节中,读者已经知道String对象的replace方法可以结合正则表达式使用。其实String对象有4个方法可以结合正则表达式使用,其中最简单的,就是search方法。search方法以正则表达式为参数,返回第一个与之匹配的子字符串的开始位置,如果没有任何子字符串与之匹配,则返回-1。search方法的使用示例如下所示。 var str = I love JavaScript and Ajax; alert(str.search(/l.*e/);/ 匹配love,返回2 alert(str.search(/s/);/ 匹配I和love之间的空格,返回1 alert(str.search(/.(?:Script)/);/ 匹配Script前面的a,返回10,3.3.5 用于模式匹配的RegExp方法,RegExp定义了2个用于模式匹配的方法,他们的行为和前面介绍的String方法很类似。第一个是exec方法,它与String对象的match方法很相似,只是它接受的参数是一个字符串,它会在此字符串中进行匹配查找,并返回一个数组。与mactch方法不同的是,无论正则表达式是否开启了全局匹配模式,exec方法每次只匹配一个结果,返回的数组第1个元素是匹配的子字符串,从第2个元素开始是正则表达式中各个分组所匹配的内容。,3.3.6 常用正则表达式,下面列出了一些常用的正则表达式,供读者参考学习: 匹配中文字符:u4e00-u9fa5 匹配双字节字符(包括汉字):x00-xff 匹配HTML标记:/.*|/ 匹配Email地址:/ w+(-+.w+)*w+(-.w+)*.w+(-.w+)*$/i 匹配URL地址:/ http:/(w-+.)+w-+(/w- ./?%,3.4.2 读取和设置日期及时间的各个部分,当得到一个Date对象后,经常需要得到日期和时间的各个组成部分以进行进一步的操作和处理,这时可以使用下列方法: getFullYear():返回对象中的年份部分,用四位数表示。 getMonth():返回对象中的月份部分(从0开始计算
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号