内容提要小结6.2JavaScript自定义对象6.1JavaScript核心对象对象是客观世界中存在的实体,对象有自己的特性,状态和行为。对象的状态由具有当前值的属性组成,对象的行为由方法组成。JavaScript是基于对象的脚本语言,而不是完全的面向对象的编程语言。在JavaScript中可以使用的对象主要由以下几类:JavaScript的核心对象,例如Date和Math;用户自定义的对象;由浏览器根据Web页面的内容自动提供的对象,又称为宿主对象,例如document对象;服务器上的固有对象;6.1JavaScript核心对象JavaScript的核心对象主要有以下几种:数组对象Array字符串对象String日期对象Date数学对象Math6.1.1数组对象数组对象用来在单一的变量名中存储一系列的值。数组是在编程语言中经常使用的一种数据结构,可以用来存储一系列的值。对于强类型的高级程序设计语言来说,数组中的元素类型必须是相同的,但在JavaScript中,同一个数组中可以存储不同数据类型的元素。1.创建数组Array对象表示数组,创建数组的方法有以下几种:vararray=newArray();创建一个空数组,长度为0。或者:vararray=newArray(size);创建一个大小为size的数组。或者:vararray=newArray(element0,element1,…);创建一个数组并赋值。或者使用字面值:vararray=[2,4,6,8,10];数组的长度是可变的,即使创建了固定长度的数组,仍然可以在长度之外存储元素,数组的长度会随之改变。2.访问数组通过索引可以访问数组元素,索引值为0~length-1(数组的长度为length)。例如:vararray=newArray(2,3,5);document.write(array[1]);//输出结果为33.数组的属性数组对象包括三个属性:length、prototype、constructor。(1)length属性length属性表示数组的长度,即数组中包括的元素的个数。js1.html:!DOCTYPEhtmlPUBLIC-//W3C//DTDHTML4.01Transitional//EN=Content-Typecontent=text/html;charset=UTF-8title数组对象的长度属性/title/headbodyscriptvararray=newArray(A,B,C,D);document.write(初始的数组元素为:);printArray(array);array.length=7;document.write(length变大的数组元素为:);printArray(array);array.length=3;document.write(length变小的数组元素为:);printArray(array);document.write(array[5]=+array[5]);functionprintArray(array){for(vari=0;iarray.length;i++){document.write(array[i]+ );}document.write(br/);}/script/body/htmljs1.html的显示结果如图所示。(2)prototype属性prototype属性是所有JavaScript对象所共有的属性,用于将新定义的属性或者方法添加到对象中,对象的实例可以调用添加的属性或方法。为对象添加方法的语法如下:Array.prototype.methodName=functionName;或者:Array.prototype.methodName=function([param1][,param2]…){Statements;}为对象添加属性的语法如下:Array.prototype.property=propertyName;例如js2.html,将数组的打印输出以及返回数组中的最大值的方法利用prototype属性添加到Array对象中。!DOCTYPEhtmlPUBLIC-//W3C//DTDHTML4.01Transitional//EN=Content-Typecontent=text/html;charset=UTF-8titleArray对象的prototype属性/titlescriptfunctionarray_max(){vari,max=this[0];for(i=1;ithis.length;i++){if(maxthis[i]){max=this[i];}}returnmax;}functionarray_print(){for(vari=0;ithis.length;i++){document.write(this[i]+ );}document.write(br/);}//将array_max和array_print方法添加到Array对象Array.prototype.max=array_max;Array.prototype.print=array_print;//验证max和print方法vararray=newArray(32,8,-12,156,78);document.write(数组元素值为:);array.print();document.write(数组中最大的元素值为:+array.max());/script/headbody/body/htmljs2.html的显示结果如图所示。(3)constructor属性constructor属性返回对创建此对象的数组函数的引用,其语法为Array.constructor。js3.html:!DOCTYPEhtmlPUBLIC-//W3C//DTDHTML4.01Transitional//EN=Content-Typecontent=text/html;charset=UTF-8titleArray对象的constructor属性/titlescriptvara=newArray();if(a.constructor=Array){document.write(arrayisArray);}elseif(a.constructor=Boolean){document.write(aisBoolean);}/script/headbody/body/htmljs3.html的显示结果如图所示。4.数组的方法Array对象提供了一些数组常用的方法,如表所示。方法说明concat()连接两个或更多的数组,并返回结果join()通过指定的分隔符进行分隔,将数组所有的元素连接成一个字符串pop()删除并返回数组的最后一个元素push()向数组的末尾添加一个或多个元素,并返回新的长度reverse()颠倒数组中元素的顺序shift()删除并返回数组中的第一个元素slice()从某个已有的数组返回选定的元素sort()对数组的元素进行排序splice()插入、删除或者替换数组中的元素toSource()返回该对象的源代码toString()将数组转换成字符串,并返回结果toLocaleString()将数组转换成本地数组,并返回结果unshift()向数组的开头添加一个或更多元素,并返回新的长度valueOf()返回数组对象的原始值(1)sort()方法Array对象的sort()方法如果没有参数,是按照字符编码的升序对数组中的元素进行排序,即使是整型的数据,也按照字符的编码顺序排序。js4.html:!DOCTYPEhtmlPUBLIC-//W3C//DTDHTML4.01Transitional//EN=Content-Typecontent=text/html;charset=UTF-8titleArray对象的方法/titlescriptvararray=newArray();//初始化数组initArray();document.write(排序之前的数组:br/+array+br/);document.write(按升序排序的数组:br/+array.sort(sortNumberAsc)+br/);document.write(按降序排序的数组:br/+array.sort(sortNumberDesc)+br/);document.write(按字符编码排序的数组:br/+array.sort())functionsortNumberAsc(a,b){if(ab){return-1;}elseif(a==b){return0;}else{return1;}}functionsortNumberDesc(a,b){if(ab){return1;}elseif(a==b){return0;}else{return-1;}}functioninitArray(){while(true){vara=prompt(请输入数值,要结束时请输入非数值数据,例如'abc',);if(isNaN(a)){break;}else{//将输入的值保存到数组的最后一个位置array.push(parseFloat(a));}}}/script/headbody/body/html请求js4.html,并输入相应的数据21.3,9,89,45,112,543,abc,显示结果如图所示。(2)splice()方法Array对象的splice()方法可以实现在数组中插入、删除或者替换元素的功能。其语法格式如下:splice(index,n,value1,value2,…);其中,index参数是必需的,指的是在数组中插入、删除或者替换元素的位置。n值也是必需的,规定删除的元素的个数,可以取0。value1,value2等为插入到数组中的新元素,从index所指的下标开始插入元素。另外,在JavaScript中只有一维数组,不能直接定义多维数组,例如以下方式是错误的:vararray=newArray(2,3);但是多维数组可以通过一维数组的嵌套定义来实现。例如:vararray=newArray((1,2,3),(4,5,6));//定义二维数组alert(array[1][1]);//显示元素56.1.2字符串对象字符串对象是JavaScript中比较常用的一种基本数据类型,它封装了一个字符串,并且提供了相应的方法,例如连接字符串、取子串,分割子符串等。JavaScript中的字符串是不可变的,原始的字符串值不可修改,例如String.toLowerCase(),返回的字符串是全新的字符串。1.创建字符串创建字符串有多种方法,可以使用字面值定义字符串。例如:varstr1=“WelcometoChina!”;创建类型为String的变量,也可以使用单引号。也可以使用new运算符调用String的构造方法来创建字符串,返回一个新建的字符串对象,类型为object。例如:varstr2=newString(“