读书人

JavaScript沿袭方式(1)

发布时间: 2012-12-27 10:17:10 作者: rapoo

JavaScript继承方式(1)

前段时间温故了下JS OO之写类方式,从这篇开始我们看看JS OO之继承方式。

面向对象的语言多数都支持继承,继承最重要的优点就是代码复用,从而构建大型软件系统。如果一个类能够重用另一个类的属性和或方法,就称之为继承。从这个角度来看看JS的继承方式。JS中继承方式与写类方式息息相关。不同的写类方式造成不同的继承方式。各种流行JS库继承方式也各不相同。从最简单的复用开始。

?

1、构造函数方式写类,通过方法调用复制父类属性/字段到子类 实现继承

这里父类,子类都采用构造函数方式写,不用原型。子类调用父类函数来复制父类的属性。

view sourceprint?view sourceprint?view sourceprint?view sourceprint?01/**02?* 父类Polygon:多边形03?*/04function Polygon(sides) {05????this.sides = sides;06}07Polygon.prototype.setSides = function(s) {this.sides=s;}08?09/**10?* Triangle 三角形11?* @param {Object} base 底12?* @param {Object} height 高13?*/14function Triangle(base,height) {15????Polygon.call(this,3);//复制父类属性给自己16????this.base = base;17????this.height = height;18}19Triangle.prototype = new Polygon();//复制父类方法给自己20?21Triangle.prototype.getArea = function(){ //最后定义自己的方法22????return this.base*this.height/2;23}24?25//new个对象26var tri = new Triangle(12,4);27console.log(tri.sides);//继承的属性28console.log(tri.setSides);//继承的方法29console.log(tri.base);//自有属性30console.log(tri.height);//自有属性31console.log(tri.getArea);//自有方法32?33//instanceof测试,表明正确的维护了"is a"的关系34console.log(tri instanceof Triangle);//true,表明该对象是三角形35console.log(tri instanceof Polygon);//true,表明三角形也是多边形

读书人网 >JavaScript

热点推荐