标签:javascript 面向对象编程 js prototype
继承是面向对象的特性之一,继承的主要目的就是为了重用。子类能复用父类的属性或者行为,可以极大地简化子类,避免重复定义。
继承的特征1.子对象拥有父对象的属性和方法
继承特征2:子对象“是一个”父对象,具备“is-a”的特点,
如人是动物,那么人就是动物的子类,体现在对象上,一个人必然有一个指向动物实例的引用
子类的prototype指向父类的一个实例,就完成了继承,因为子类的实例上具备了父类实例的属性和行为。
Java中子类实例有super关键字指向父类实例,在继承上,所有面向对象语言都差不多的。
//形状 function Shape(){ this.name = 'shape'; this.toString = function() {return this.name;}; } //2d形状 function TwoDShape(){ this.name = '2D shape'; } //三角形 function Triangle(side, height) { this.name = 'Triangle'; this.side = side; this.height = height; this.getArea = function(){return this.side * this.height / 2;}; } //继承的特征1.子对象拥有父对象的属性和方法 TwoDShape.prototype = new Shape(); Triangle.prototype = new TwoDShape(); //修复 TwoDShape.prototype.constructor = TwoDShape; Triangle.prototype.constructor = Triangle; var my = new Triangle(5, 10); alert(my.toString());//自己没有toString方法,继承而来 alert(my.constructor); /*继承特征2:子对象“是一个”父对象,具备“is-a”的特点, 如人是动物,那么人就是动物的子类,体现在对象上,一个人必然有一个指向动物实例的引用*/ alert(my instanceof TwoDShape);//有继承的特性 alert(my instanceof Shape);
标签:javascript 面向对象编程 js prototype
原文地址:http://blog.csdn.net/zhengwei223/article/details/41809057