Welcome 微信登录

首页 / 脚本样式 / JavaScript / javascript学习笔记3-构造函数、类和原型

javascript学习笔记3-构造函数、类和原型2010-02-21 javaeye lgx23513.构造函数、类和原型

总述:

对象是我们很熟悉的,常在程序中用它。那么,如何来区分一个对象与另一个对象的区别呢?类就做到了这点,对象是类的一个实例。

Js中的类与java的类不太一样,但是它构造函数和原型来来支持类。

3.1构造函数

我们在程序里使用对象时常常先new一个object,然后再给这个object赋属性,然后再使用这个object来实现我们想要的功能。很经常的,new一个无参数的object,我们这样写:

Js代码

var o = {};

其实它的实现与下面的代码是一样的:

Js代码

var o = new object();

在后面的写法中,new 后面的object()就是一个构造函数,就像在程序里我们常常自定义构造函数,设置它的prototype,再new一样。那么什么是构造函数呢?

构造函数是设计来和new一起使用的函数。new后,就把新的对象作为this关键字的值来传递了。

构造函数的作用是什么呢?它是初始化一个新创建的对象,设置在使用这个对象之前的所有属性。

可以定义自己的构造函数(常用),只需要编写一个为this添加属性的函数就可以了。如下的例子:

Js代码

function Rectangle(w,h){
this.w = w;
this.h = h;
}
var rec1 = new Rectangle(1,1);//var rec1 = {w:1,h:1}
var rec1 = new Rectangle(2,2);//var rec2 = {w:2,h:2}

以上代码注意:

1、注释里的效果也是一样的。那么我们为什么还要定义构造函数呢?构造函数方便你new多个对象,而注释里的写法是只需要使用一次这样的对象。

2、从上面的代码可以看出:通过定义一个函数(构造函数),其实就定义了对象的一个类。

3、上述类new的对象,都保证了初始化了w和h的值。根据传入构造函数的w和h的数值的不同,可以得到不同w和h值的对象,但这些对象都有相同的属性(如计算面积的方法都相同等)。

3.2原型与继承

在上面代码的例子中,我们如果要计算rec1这个对象的面积,需要这样做:

Js代码

rec1.area = function(){
return this.w * this.h
}
var a = rec1.area();

在上面这种情况下,如果rec2也要得到它的面积,也要定义一个它自己的area函数值。其实,所有的rectangle对象的计算面积的方法是一样的,我们可以把这个方法写在构造函数里。如下:

Js代码

function Rectangle(w,h){
this.w = w;
this.h = h;
this.area = function(){this.w*this.h}
}

这时候用这个新的构造函数后new的对象就可以直接用rec1.area()来得到它的面积了。