您的位置:首页 > Web前端 > JavaScript

JavaScript中支持面向对象的基础

2008-07-08 10:41 435 查看
6.1 JavaScript 中支持面向对象的基础

6.1.1 用定义函数的方式定义类

在面向对象的思想中,最核心的概念之一就是类。一个类表示了具有相似性质的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例(即对象)。在JavaScript中定义一个类的方法如下:

function class1(){ //类成员的定义及构造函数 }

这里class1 既是一个函数也是一个类。作为函数,它可以理解为类的构造函数,负责初始化的工作。

6.1.2 使用new 操作符获得一个类的实例

在前面介绍基本对象时,已经用过new操作符,例如:new Date();表示创建一个日期对象,而Date 就是表示日期的类,只是这个类是由JavaScript 内部提供的,而不是由用户定义的。new 操作符不仅对内部类有效,对用户定义的类也是同样的用法,对于上节定义的class1,也可以用new来获取一个实例:

function class1()
{
//类成员的定义及构造函数
}
var obj1=new class1();

抛开类的概念,从代码的形式上来看,class1就是一个函数,那么是不是所有的函数都可以用new来操作呢?答案是肯定的。在JavaScript中,函数和类就是一个概念,当new一个函数时,就会返回一个对象。如果这个函数中没有初始化类成员,那就会返回一个空的对象。例如:

//定义一个hello函数
function hello(){
alert(“hello”);
}
//通过new一个函数获得一个对象
var obj=new hello();
alert(typeof(obj));

从运行结果看,执行了hello函数,同时obj也获得了一个对象的引用。事实上,当new一个函数时,这个函数就是所代表类的构造函数,其中的所有代码都可以看作为了初始化一个对象而工作。用于表示类的函数也称之为构造器。

6.1.3 使用方括号([ ])引用对象的属性和方法

在JavaScript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法)很简单,


[b]即:对象名.属性(方法)名


对象名[“属性(方法)名”]

注意,这里的方法名和属性名是一个字符串,而非原先点号后面的标识符,例如:

var arr=new Array();
//为数组添加一个元素
arr[“push”](“abc”);
//获得数组的长度
var len=arr[“length”];
//输出数组的长度
alert(len);

上面的代码等价于:

var arr=new Array();
//为数组添加一个元素
arr.push( “abc”);
//获得数组的长度
var len=arr.length;
//输出数组的长度
alert(len);

这种引用属性(方法)的方式和数组类似,也体现出一个JavaScript对象就是一组属性(方法)的集合这个性质。这种用法适合不确定具体要引用哪个属性(方法)的场合,例如:一个对象用于表示用户资料,这时一个字符串表示要使用哪个属性,那就可以用这种方式来引用: <script language="JavaScript" type="text/javascript"> <!-- //定义了一个User 类,包括两个成员age和sex,并指定了初始值。

[/b]除此之外,还可以用方括号的形式来引用:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: