Tags标签 网战地图
当前位置: 主页 > 网页设计 > JavaScript >

JavaScript面向对象程序设计(5) 类

2014-06-09 21:56 [JavaScript] 来源于:
导读:类是面向对象程序设计的核心概念之一。一个类代表了具有相似属性的一类事物的抽象。从本篇开始 ,我们将正式的进入JavaScript的面向对象部分。首先需要注意的是

类是面向对象程序设计的核心概念之一。一个类代表了具有相似属性的一类事物的抽象。从本篇开始 ,我们将正式的进入JavaScript的面向对象部分。首先需要注意的是,在JavaScript中并没有“类 ”这一关键字——在大多数语言中都是使用class作为关键字的。所以,这里的类就成 了一个概念,它没有明确的语法标志。

1.类和构造函数

前面说过,在JavaScript中并没有明确的类的概念。实际上,我们给出的只是类的构造函数。类的构 造函数构成了这个类的全部内容。既然叫做构造函数,它也是一个普通的函数,没有什么不同之处。因 此,我们能够很轻易的定义出一个构造函数:

function Person(name, age) {
 this.name = name;
 this.age = age;
 this.show = function() {
  alert("Hello, my name is " + this.name + ", my age is " + this.age);
 };
}

这里,我们定义了一个类 Person,它有两个属性:name和age;有一个方法:show。看上去和其他语 言的类的定义没有什么不同。其实,这里最大的不同就是在于这个关键字function。我们使用了定义函 数的方式定义了一个类。

2.new

定义出来类之后,需要创建类的对象。同其他语言一眼,JavaScript也使用new操作符创建对象。具 体代码如下:

var bill = new Person("Bill", 30);
alert(bill.name);
alert(bill["age"]);
bill.show();

这里使用new创建一个Person类的对象。和其他语言类似,new之后是该类的构造函数。当创建对象之 后,就可以像前面的章节中说到的一样,使用.或者[]对属性进行访问。

注意一下,这里的构造函数就是一个普通的函数,那么,是不是所有的函数都可以使用new操作符呢 ?答案是肯定的。那么,这个new操作符到底做了什么呢?

当使用new操作符的时候,首先JavaScript会创建一个空的对象,然后将会对这个对象进行初始化。 用什么来初始化呢?当然就是你调用的那个构造函数了。最后,这个创建的对象将返回给调用者,于是 ,我们就可以使用这个对象了。

3.prototype

prototype是原型的意思。在JavaScript中,每个对象都有一个prototype属性。这个属性指向一个 prototype对象。这就是原型属性和原型对象的概念。

每个对象都有一个prototype属性,构造函数是一个普通的函数,而函数也是一个对象,因此,构造 函数也有一个 prototype属性。而每个prototype对象都有一个constructor属性,这个prototype对象的 constructor属性指向这个prototype属性所在的构造函数本身。也就是说,new操作符要保证生成的对象 的prototype属性和构造函数的prototype属性是一致的。

有点迷糊了不是?看一下下面的图,无论怎样,都要保证这个图所示的关系式正确的!

需要大家注意的是,这个prototype对象是JavaScript的面向对象的基础,包括继承等的实现都是使 用prototype。

(编辑:)

本文标签:
网友评论

栏目列表

推荐文章