javascript的继承一:只继承于原型 在Javascript的面向对象的继承中,每个构造函数(函数本身也是一个对象)都有一个PRototype属性,该prototype属性也是一个对象。将子对象的prototype属性指向父对象的prototype属性。这里是一个对象的拷贝,对象拷贝的实质是引用拷贝,即父对象的原型和子对象的原型是同一个对象的引用。即继承关系所有对象的prototype都指向(引用)同一个对象,这必然导致对于原型链的查找是对一个原型对象的检索,所以这种只基于原型的继承方式增加了对象查找的效率。但是,缺点就是共享一个原型对象,那么子原型对象的属性会覆盖父原型对象的属性,如本例中TwoDShape的那name属性会覆盖Shape的name属性,如果使用Shape构造一个对象,它的name属性也会变成“TwoDShape”。
//只基于原型的继承function Shape(){}Shape.prototype.name = 'Shape'Shape.prototype.toString = function(){ return this.name;};function TwoDShpe(){}TwoDShpe.prototype = Shape.prototype;TwoDShpe.prototype.constructor = TwoDShpe;TwoDShpe.prototype.name = "TwoDShpe";function Triangle(side,height){ this.height = height; this.side = side;}Triangle.prototype = TwoDShpe.prototype;Triangle.prototype.constructor = Triangle;Triangle.prototype.name = "Triangle";Triangle.prototype.getArea = function(){ return this.side * this.height;};新闻热点
疑难解答