Maison >interface Web >js tutoriel >js对象的构造和继承实现代码_js面向对象

js对象的构造和继承实现代码_js面向对象

WBOY
WBOYoriginal
2016-05-16 18:14:37795parcourir

复制代码 代码如下:

<script> <BR>//定义js的user对象 <BR>function User(name,age){ <BR>this.name=name, <BR>this.age=age, <BR>this.getName=function(){ <BR>return this.name; <BR>}, <BR>this.getAge=function(){ <BR>return this.age; <BR>} <BR>} <BR>//实例化一个对象 <BR>var use=new User("aa",21); <BR>alert(use.name); <BR>alert(use.getAge()); <BR>//js对象继承 <BR>/* <BR>jb51.net 在面向对象的编程方法中,对象继承是必不可少的,那么怎么在javascript中实现继承机制呢。由于javascript并不是一个严格的面向对象的语言,因此在对象继承上也显的不一样。我们也来创建一个基类Polygon,代表一个多边形,一个多边形有个共同的属性就是边数(sides)和一个共同的方法计算面积(getAreas)。这样我们的这具Polygon类看起来就像下面这样定义: <BR>*/ <BR>function Polygon(iSides){ <BR>this.sides = iSides; <BR>} <BR>Polygon.prototype.getAreas = function(){ <BR>return 0; <BR>} <BR>/* <BR>因为基类并不能确定面积,因此在这里我们返回为0。 <BR>接着我们就创建一个子类Triangle,一个三角形,显然这个三角形是要从多边形继承的,因此我们要让这个Triangle类继承Polygon类,并且要覆盖Polygon类的getAreas方法来返回三角形的面积。我们来看下在javascript中的实现: <BR>*/ <BR>function Triangle(iBase, iHeight){ <BR>Polygon.call(this,3); //在这里我们用Polygon.call()来调用Polygon的构造函数,并将3作为参数,表示这是一个三角形,因为边是确定的,所以在子类的构造函数中就不需要指定边了 <BR>this.base = iBase; //三角形的底 <BR>this.height = iHeight; //三角形的高 <BR>} <BR>Triangle.prototype = new Polygon(); <BR>Triangle.prototype.getAreas = function(){ <BR>return 0.5 * this.base *this.height; //覆盖基类的getAreas方法,返回三角形的面积 <BR>} <br><br>/* <BR>参考上面的实现,我们再定义一个矩形: <BR>*/ <BR>function Rectangle(iWidth, iHeight){ <BR>Polygon.call(this,4); <BR>this.width = iWidth; <BR>this.height = iHeight; <BR>} <BR>Rectangle.prototype = new Polygon(); <BR>Rectangle.prototype.getAreas = function(){ <BR>return this.width * this.height; <BR>} <BR>/* <BR>好了,上面我们定义了一个基类和两个子数,下面我们来测试一个这两个子类是否能正常工作: <BR>*/ <BR>var t = new Triangle(3,6); <BR>var r = new Rectangle(4,5); <BR>alert(t.getAreas()); //输出9说明正确 <BR>alert(r.getAreas()); //输出20说明正确 <BR></script>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn