javascript 学习笔记3-构造函数、类和原型
2009-09-06 00:00:00 来源:WEB开发网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()来得到它的面积了。
但是这里引出了一个问题,什么问题呢?
如果用上面的构造函数的放,每new一个矩行对象,都会初始化三个属性,这三个属性中除了w和h是每个对象不同的,area属性却是每个对象都指向同一个函数functiion。
这就引出了原型。可以把area方法放在这个类的原型对象里。
1、原型对象的任何属性,都表现为以它为原型的对象的属性。这句话比较难理解,好好理解一下,其实它说的是js中的对象都从它的原型里继承属性。
2、当我们new一个对象时,其实在内部也设置了这个对象的原型,这个对象的原型就是它的构造函数的prototype的值。
3、所有的函数都有一个prototype属性。也就是你定义一个函数后,prototype就被自动创建和初始化了。
编缉推荐阅读以下文章
- javascript 学习笔记2-函数
- javascript 学习笔记1-对象和数组
Tags:javascript 学习 笔记
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接