javascript 学习笔记3-构造函数、类和原型
2009-09-06 00:00:00 来源:WEB开发网在java的类中,确切地指定了字段,及方法的同时,会有一个类方法名,但是js不会有一个正式的类名,它只是通过构造函数和原型来模拟类。
Js和java的类都可以有多个对象,一个对象就是类的一个实例。
一个java类的类成员有实例属性、实例方法、类属性、类方法。下面分别来说明:
实例属性:
每个对象都拥有它的实例属性的一份拷贝,实例属性都是通过对象来访问。如:
r1.w
在Retangle类中,每个Retangle对象都有一个w属性指定了它的宽度。
默认情况下,js的任何对象属性都是一个实例属性。然而为了真实地模拟面象对象的类,我们说实例属性是由构造函数创建和初始化的属性。
实例方法:
实例方法在特定的对象上被调用。如:
r1.eara()
实例方法里通过this来引用调用它的对象。我们千万不要理解成实例方法是每个对象都有一份自己的私有拷贝,实例属性是每个对象都有有一份自己的私有拷贝,但实例方法却相反,这是每个对象所共享的。我们一般把实例方法放在构造函数的原型上来定义,通过这种方式,这样,通过这个构造函数实例化的对象都共享和继承了这个方法。
类属性:
类属性是与一个类自身相关的属性,而不是和这个类的每个实例相关的属性。类属性通过自身来调用。
不管创建了多少份这个类的实例,类属性只有一份。类属性本质上是全局的。
在js里,我们通过定义构造函数的自身的一个属性来定义类属性。
类方法:
类方法是与一个类自身相关,而不是与类的实例相关的方法。类方法通过自身来调用。
要定义一个类方法,只需要把这个相应的函数定义成为构造函数的一个属性就可以了。
类方法的this并不指向类的任何具体的实例,而是引用构造函数自身。
代码例子如下:
Js代码
functinn Circle(x,y,r){
//这里的x,y,r都是实例属性
this.x = x;
this.y = y;
this.r = r;
}
//这里的pi是类属性
Circle.pi = 3.1415
Circle.prototype={
//area()方法是实例方法
area:function(){
return Circle.pi * this.r*this.r
}
}
//max()方法是个类方法,传入a和b两个类实例进行比较,并征对某个具体的实例
Circle.max = function(a,b){
if(a.r>b.r) return a;
else return b;
}
编缉推荐阅读以下文章
- javascript 学习笔记2-函数
- javascript 学习笔记1-对象和数组
Tags:javascript 学习 笔记
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接