第8章 JavaScript中的内置对象
JavaScript语言不像Java语言和C++语言支持真正的面向对象编程,JavaScript语言的使用并不依赖于对象。JavaScript中的对象是由函数创建的,用来创建对象的函数也称为构造函数或类型。通常一个对象所对应的类型为这个对象的类型。和其他面向对象语言相似,在JavaScript语言中使用new操作符来创建一个对象。本章内容包括:
❑ JavaScript中的对象概述;
❑ 字符串对象;
❑ 数组对象;
❑ 日期对象;
❑ 数学对象。
通过本章学习,读者可以掌握JavaScript中的字符串对象、数组对象、日期对象以及数学对象的使用方法。
8.1 JavaScript中的对象
JavaScript语言是一种面向对象的语言,因此可用面向对象的思想来设计JavaScript程序。一个对象通常对应于现实世界中的一个实体,这些实体封装了一些方法和属性,通过这些方法和属性来改变对象的状态及完成某项功能。
8.1.1 JavaScript对象简介
对象是整个面向对象程序设计的理论基础。对象可以理解为一种新型的变量,其保存着一些有用的数据。HTML文档中的大多数组件在内部浏览器对象模型中表现为对象。对象也是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,其不仅能表示具体的事物,还可以表示抽象的规则、计划或事件。对象具有状态,还有操作。对象一般用数据值来描述其状态,用于改变对象的状态的操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。另外,对象可能既有内部数据和函数,也有外部数据和函数。内部数据和函数(私有的)处理操作屏幕的细节,而有效的外部数据和函数(公用的)让程序的其他部分将数据输出到屏幕。
8.1.2 对象属性
在JavaScript中,编程者可以调用对象变量的属性。比如说人是一个对象,那么人的身高、重量、籍贯等就是人的属性,换句话说就是对象的属性。例如,有一个公用属性叫“obj”,用来存放要显示的图像名字。设置对象属性的方法就像设置一个变量一样:
show.obj=”JPG/xp.jpg”
8.1.3 对象的方法
一个对象的内部函数叫做方法。就拿人举例,人的工作、学习、打球、爬山是人可以实现的方法,对象的方法与此类似。对象的内部方法叫做私有方法。在对象外部的有效方法叫做公用方法。对象的内部方法在对象外部不可存取,只有对象的内部语句部分可以用对象的私有方法和变量。
8.1.4 面向对象特征
面向对象有一些特征,如对象的唯一性,抽象性,继承性,多态性等。下面将简单介绍这些特征。
1.对象的唯一性
每个对象有自身唯一的标识,通过这种标识,可到相应的对象。在对象的整个生命期中,其标识都不改变,不同的对象不能有相同的标识。如,人在社会上有一个唯一的身份证号与之对应,这可称为人的唯一标识。
2.抽象性
将具有一致的数据结构和行为的对象抽象成类。一个类就是这样一种抽象,其反应了与应用有关的重要性质,忽略其他内容。如,鸡、狗、猪、羊等就是动物,它们具有动物的一些特性。
3.继承性
继承是子类共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现类的时候,可以在一个已经存在的类基础上来进行,把该已经存在的类所定义的内容作为自己的内容,并加上若干新内容。
❑ 在类层次中,子类只继承一个父类数据结构和方法,则称为单重继承。
❑ 在类层次中,子类继承多个父类的数据结构和方法,则成为多重继承。
如,动物有高度、重量,可以跑,跳等动作,人也继承了动物的这些特征和动作。
4.多态性
面向对象的语言多数都支持多态性。从本质上讲,多态性可以引用多个对象。通过多态性,程序员可以向一个对象发送消息来完成一系列操作,而不用关心软件系统是如何实现这些操作的。多态性是指相同的操作和函数、过程可作用于多种类型的对象上并可以获得不同结果。不同对象接受相同消息可以产生不同结果。这种性质可以称为多态性。多态性增加了程序的灵活性和可重用性。如,定义两个方法,其中一个方法是对输入的整数进行运算,并输出结果,另外一个方法是对输入的浮点数进行运算,并输出结果。实际程序运行时,如果用户输入的是整数,就调用对整数进行操作的方法,否则就调用对浮点数进行操作的方法,这就可以理解为面向对象的多态性。
8.1.5 面向对象的要素
封装性和共享性都是面向对象的要素,下文将简单介绍这些要素。
1.封装性
封装性是保证程序具有优良的模块性的基础。面向对象的类是封装良好的模块,类定义将说明与实现显示分开,其内部实现按其具体定义的作用域提供保护。如,要完成事件A,需要先完成步骤1,再完成步骤2,再完成步骤3,经过函数封装,调用者无需知道其内部细节。
2.共享性
面向对象编程在不同级别上促进了共享。
❑ 同一类中的共享是指类中的对象具有相同的数据结构。这些对象之间是结构、行为特征的共享关系。
❑ 同一应用中的共享是指存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。
不同应用中的共享是指可以通过类库这种机制和结构来实现不同应用中的信息共享。如,C++语言中定义的头文件,可以在任意的c++文件中调用。
8.2 字符串对象
字符串是用引号括起来的任何文本。其中,引号可以是单引号也可以是双引号。JavaScript语言对字符串内的字符数目没有限制,但大多数浏览器限制JavaScript语句长度不超过255个字符。本节将详细讲解字符串对象。
8.2.1 字符串
前面几章已经介绍了如何定义初始化变量,下面来简要介绍常见的字符串的赋值和连接的方法。
1.字符串的赋值
把一个字符串赋值给一个变量一般有两种方法。前面介绍了一种最简单的方法:
var 字符串名=”字符串的内容”;
从Navigator 3.0版本和Internet Explorer4.0版本开始,JavaScript就引入了一个更规范的语法来建立一个字符串对象。该方法包括一个new关键词和一个构造器函数:
var 字符串名= new String(”字符串的内容”);
代码说明:
❑ var是定义变量所必须的;
❑ 使用new关键字来创建字符串;
❑ String里面是字符串的内容,注意使用双引号。
2.字符串的连接
把两个字符串组成一个字符串成为字符串的连接。JavaScript语言提供了加号运算符来构造一个较长的运算符。
【示例8-1】演示两个字符串的连接。
var string1=”hello”; //定义初始化字符串
string1=string1+”world”; //两个字符串的连接
string1=string1+”I am abc”; //两个字符串的连接
最后字符串string1的值为:helloworldI am abc。
另外还有一种称为add-by-value运算符(加等于运算符),提供另外一种字符串连接的方法。
【示例8-2】演示add-by-value运算符的使用。
var string2=”hello”; //定义初始化字符串
string2+=”world”; //两个字符串的连接
string2+=”I am abc”; //两个字符串的连接
String2的值为:helloworldI am abc。
同样,这两种方法也可以组合起来操作:
var string3=”hell0”;
string3=string3+”world”+”I am abc”;
String3的值为:helloworldI am abc。
8.2.2 判断字符串对象的构造器属性
构造器(constructor)属性用来表示创建对象的函数。constructor属性是所有具有prototype(原型)的对象成员。constructor属性保存了对构造特定对象实例的函数的引用。
【示例8-3】演示使用constructor属性。
x=new String(“Hi”);
structor= =String)
{
//处理语句(条件为真)
}
代码说明:
❑ x.constructor返回的是x的对象属性。
8.2.3 获取字符串对象的长度
长度(length)是最常用的字符串对象的属性。如果要得到一个字符串的长度,可以调用它的长度属性:
string.length
length属性是一个整数,其值是一个字符串包含字符的数目。
【示例8-4】获取字符串的长度属性。
var string1=”look”;
result1=string1.length;
result2=”hello world”.length;
result3=””.length;
代码说明:
❑ result1是“look”的长度为4;
❑ result2是“hello world”的长度为11;
❑ result3是“”的长度为0。
注意:空格和标点符号都作为字符计数,而换行及tab在内的转义字符都作为一个字符来对待。
8.2.4 创建和使用字符串对象的原型
JavaScript语言中对象的prototype(原型)属性是用来返回对象原型的引用。原型可以作为编程者的模板,为新建立的对象添加一些新属性及方法。原型也跟Word里的格式刷一样,使用格式刷可以将字符串刷成所需要的字体格式。
【示例8-5】演示如何创建和使用原型。
javascript全局数组
<html>
<head>
<title>
原型使用
</title>
</head>
<body>
<script type="text/javascript">
/*插入JavaScript代码*/
function makeitgreen() //创建makeitgreen函数
{
return "<font color='green'>"+string()+"</font>" //将字符串的颜变为绿
}
=makeitgreen //调用函数赋值给原型
</script>
<script type="text/javascript">
document.write("hello world!".gree()); //调用原型转换字符串
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论