JavaScript面向對象編程(9)高速構建繼承關系之整合原型鏈
阿新 • • 發佈:2017-05-06
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)高速構建繼承關系之整合原型鏈