1. 程式人生 > >JavaScript面向對象編程(9)高速構建繼承關系之整合原型鏈

JavaScript面向對象編程(9)高速構建繼承關系之整合原型鏈

eight family per ria code prot style triangle super

前面我們鋪墊了非常多細節。是為了讓大家更加明晰prototype的使用細節;

如今能夠將前面的知識整合起來,寫一個函數用於高速構建基於原型鏈的繼承關系了:

function extend(Child, Parent) {
	var F = function(){};
	F.prototype = Parent.prototype;
	Child.prototype = new F();
	Child.prototype.constructor = Child;
	Child.uber = Parent.prototype;
}

使用起來也特別簡單:

function Shape(){}
// augment prototype
Shape.prototype.name = ‘shape‘;
Shape.prototype.toString = function(){
	var result = [];
	if (this.constructor.uber) {
		result[result.length] = this.constructor.uber.toString();//super.toString()
	}
	result[result.length] = this.name;
	return result.join(‘, ‘);
};
function TwoDShape(){}
//先繼承。再增強
extend(TwoDShape,Shape);

TwoDShape.prototype.name = ‘2D shape‘;

function Triangle(side, height) {
	this.side = side;
	this.height = height;
}

extend(Triangle,TwoDShape);
Triangle.prototype.name = ‘Triangle‘;
//使用繼承而來的toString方法
alert(new Triangle(10,5).toString());


JavaScript面向對象編程(9)高速構建繼承關系之整合原型鏈