1、第6章 String、Math、Array等数据对象,JavaScript脚本提供丰富的内置对象,包括同基本数据类型相关的对象(如String、Number)、允许创建用户自定义和组合类型的对象(如Object、Array)和其他能简化JavaScript操作的对象(如Math、Date、RegExp、Function)。其中,RegExp对象将在“正则表达式”章节进行详细的叙述。本章从实际应用出发,详细讨论其余的JavaScript脚本内置对象。,6.1 String对象,String对象是和原始字符串数据类型相对应的JavaScript脚本内置对象,属于JavaScript核心对象之一,主
2、要提供诸多方法实现字符串检查、抽取子串、字符串连接、字符串分割等字符串相关操作。 语法如下: var MyString=new String( ); var MyString=new String(string);该方法使用关键字new返回一个使用可选参数“string”字符串初始化的String对象的实例MyString,用于后续的字符串操作。,6.1.1 如何使用String对象方法操作字符串,使用String对象的方法来操作目标对象时,并不操作对象本身,而只是返回包含操作结果的字符串。例如要设置改变某个字符串的值,必须要定义该字符串等于将对象实施某种操作的结果。,6.1.2 获取目标字符
3、串长度,字符串的长度length作为String对象的唯一属性,且为只读属性,它返回目标字符串(包含字符串里面的空格)所包含的字符数。,6.1.3 连接两个字符串,String对象的concat( )方法能将作为参数传入的字符串加入到调用该方法的字符串的末尾并将结果返回给新的字符串,语法如下:newString=targetString.concat(anotherString);,6.1.4 分隔字符串,String对象提供split( )方法来进行字符串的分割操作,split( )方法根据通过参数传入的规则表达式,或分隔符来分隔调用此方法的字符串。,6.1.5 常见属性和方法汇总,Java
4、Script脚本的核心对象String提供大量的属性和方法来操作字符串。表6.1列出了其常用的属性、方法,以及脚本版本支持情况。,6.2 Math对象,Math对象是JavaScript核心对象之一,拥有一系列的属性和方法,能够进行比基本算术运算更为复杂的运算。但Math对象所有的属性和方法都是静态的,并不能生成对象的实例,但能直接访问它的属性和方法。,6.2.1 基本数学运算,Math对象提供丰富的方法用于数学运算,特别是三角函数方面的方法。由于三角函数的参数使用弧度制,要在参数上乘以。,6.2.2 任意范围随机数发生器,在JavaScript脚本中,可使用Math对象的random()方法
5、生成0到1之间的随机数。首先产生0和1之间的随机数,然后通过系数变换,将其限定在m和n(nm)之间的随机数,并可通过更改文本框内容的形式,产生任意范围的随机数。,6.2.3 访问其基本属性,Math对象拥有很多基本属性,如圆周率Math.PI、Math.SQRT2、Math.log10E等,表示数学运算中经常使用的常量。,6.2.4 常见属性和方法汇总,Math对象提供大量的属性和方法实现JavaScript脚本中的数学运算,但由于其为静态对象,不能创建对象的实例,更不能动态添加属性和方法,导致其使用范围较窄。下面介绍功能完善,且扩展方便的Array对象。,6.3 Array对象,数组是包含基
6、本和组合数据类型的有序序列,在JavaScript脚本语言中实际指Array对象。数组可用构造函数Array( )产生,主要有以下几种构造方法。 Var MyArray=new Array(); var MyArray =new Array(4); var MyArray =new Array(arg1,arg2,.,argN);,6.3.1 创建数组并访问其特定位置元素,JavaScript脚本中,使用new操作符来创建新数组,并可通过数组元素的下标实现对任意元素的访问。,6.3.2 数组中元素的顺序问题,Array对象提供相关相关方法实现数组中元素的顺序操作,如颠倒元素顺序、按Web应用程
7、序开发者制定的规则进行排列等,主要有Array对象的reverse()和sort()方法。,6.3.3 使用splice()方法添加和删除数组元素,Array对象的splice()方法提供一种在数组任意位置添加、删除数组元素的方法。语法如下:MyArray.splice(start,delete,arg3,argN);,6.3.4 修改length属性更改数组,Array对象的length属性保存目标数组的长度:var strLength=MyArray.length;Array对象的length属性检索数组末尾的下一个可及(未被填充)的位置的索引值,即使前面有些索引值并没被使用,length
8、属性也返回最后一个元素后面的第一个可及位置的索引值。,6.3.5 调用Array对象的方法生成字符串,在Web应用程序开发过程中,常常需要将数组元素按某种形式转化为字符串,如需将存放用户名的数组中各个元素转换为字符串并赋值给各用户等。,6.3.6 常见属性和方法汇总,JavaScript脚本的核心对象Array提供大量的属性和方法来操作数组。表6.4列出了其常用的属性、方法以及脚本版本支持情况。JavaScript核心对象Array为我们提供了访问和操作数组的途径,使JavaScript脚本程序开发人员很方便、快捷操作数组这种储存数据序列的复合类型。,6.4 Date对象,在Web应用中,经常
9、碰到需要处理时间和日期的情况。JavaScript脚本内置了核心对象Date,该对象可以表示从毫秒到年的所有时间和日期,并提供了一系列操作时间和日期的方法。,6.4.1 生成日期对象的实例,Date对象的构造函数通过可选的参数,可生成表示过去、现在和将来的Date对象。其构造方式有4种,分别如下: var MyDate=new Date(); var MyDate=new Date(milliseconds); var MyDate=new Date(string); var MyDate=new Date(year,month,day,hours,minutes,seconds,millis
10、econds);,6.4.2 如何提取日期各字段,Date对象以目标日期与GMT标准零点之间的毫秒数来储存该日期,给脚本程序员操作Date对象带来一定的难度。为解决这个难题,JavaScript提供大量的方法而不是通过直接设置或读取属性的方式来设置和提取日期各字段,这些方法将毫秒数转化为对用户友好的格式。,6.4.3 如何设置日期各字段,在实际应用中,通常需要在原有的日期基础上得到新的日期,如电影中的“二十年后”等。Date对象提供一系列的操作日期的方法。,6.4.4 将日期转化为字符串,Date对象提供如toGMTString()、toLocalString()等方法将日期转换为字符串,而不
11、需要开发人员编写专门的函数实现该功能。,6.4.5 常见属性和方法汇总,Date对象提供成熟的操作日期和时间的诸多方法,方便脚本开发过程中程序员简单、快捷操纵日期和时间。,6.5 Number对象,Number对象对应于原始数值类型和提供数值常数的对象,可通过为Number对象的构造函数指定参数值的方式来创建一个Number对象的实例。其中的参数符合IEEE 754-1985标准,采用双精度浮点数格式表示,占用64字节,允许浮点量级不大于同时不小于。,6.5.1 创建Number对象的实例,Number对象具有构造函数Number(),该函数使用传入的参数初始化新创建的Number对象实例,同
12、时也可不使用任何参数,表示构造一个空的Numer对象实例。例如: var MyData=new Number(); var MyData=new Number(value);,6.5.2 将Number对象转化为字符串,使用上述的方法构造Number对象的实例后,可调用Number对象的toString()方法将其转化为字符串。,6.5.3 常见属性和方法汇总,Number对象为JavaScript核心对象中表示数值类型的对象,拥有较少的属性和方法,表6.6为其常用的属性、方法以及脚本版本支持情况。,6.6 Function对象,JavaScript核心对象Funtion为构造函数的对象,由于
13、开发者一般直接定义函数而不是通过使用Function对象创建实例的方式来生成函数,对于实际编程而言,Function对象很少涉及到,但正确地理解它有助于开发者加深对javaScript脚本中函数概念的理解。,6.6.1 两个概念:Function与function,简而言之,Function是对象而function是函数。实际上,在JavaScript中声明一个函数本质上为创建Function对象的一个实例,而函数名则为实例名。,6.6.2 使用Function对象构造函数,在JavaScript中,构造函数常用如下两种方法: 函数的原始构造方法 创建Function对象实例的方法,6.6.3
14、 常见属性和方法汇总,Function对象在脚本编程中使用不是很广泛,表6.7列出了其常用的属性、方法以及脚本版本支持情况。,6.7 Object对象,所有的JavaScript对象都继承自Object对象,后者为前者提供基本的属性(如prototype属性等)和方法(如toString()方法等)。而前者也在这些属性和方法基础上进行扩展,以支持特定的某些操作。,6.7.1 创建Object对象的实例,Object对象的实例构造方法如下:var MyObject=new Object(string);上述语句构造object对象的实例MyObject,同时用以参数传入的string初始化对象实
15、例,该实例能继承object对象提供的几个方法进行相关处理。参数string为要转为对象的数字、布尔值或字符串,此参数可选,若无此参数,则构建一个未定义属性的新对象。,6.7.2 常见属性和方法列表,通过从Object对象继承产生后,String、Math、Array等对象获得了Object对象所有的属性和方法,同时扩充了之只属于自身的属性和方法,以对特定的目标进行处理。表6.8为其常用的属性、方法以及脚本版本支持情况。,6.8 本章小结,JavaScript语言的核心对象由于其构成了脚本编程的基础,显得尤为重要。本章主要介绍了除RegExp对象之外的其余JavaScript核心对象,论述了其创建策略、常见操作并与实际需求相结合,列举了很多常用的操作实例,如电子邮件地址合法性验证、任意范围随机数发生器等。很多核心对象与JavaScript支持的各种数据类型相关,程序员经常使用与数组、字符串等复杂数据类型相关的内置变量的属性和方法,但大多数程序员会忽略“基本类型也是对象”的事实。理解它们之间的联系可以使读者成为优秀的JavaScript脚本程序员,而不是普通的使用者。前几章了解了JavaScript脚本的概念、语法、事件处理和内置的核心数据对象等基础知识。下一章将讲解window等顶级对象。,