1 <HTML> 2 3 <HEAD> 4 <TITLE>Prototype-based Inheritance</TITLE> 5 6 <SCRIPT LANGUAGE="JavaScript"> 7 8 function Ellipse( r1, r2 ) { 9 this.r1 = ( r1 > 0 ) ? r1 : 0; 10 this.r2 = ( r2 > 0 ) ? r2 : 0; 11 this.area = new Function( 12 "return Math.PI * this.r1 * this.r2" ); 13 } 14 15 function Circle( r ) { 16 this.r = ( r > 0 ) ? r : 0; 17 this.parent = Ellipse; 18 this.parent( r, r ); 19 } 20 Circle.prototype = new Ellipse; 21 22 </SCRIPT> 23 24 </HEAD> 25 26 <BODY BGCOLOR="#FFFFFF"> 27 28 <SCRIPT LANGUAGE="JavaScript"> 29 30 var circle, ellipse; 31 32 with ( document ) { 33 writeln( "<TABLE>" ); 34 writeln( " <TR>" ); 35 writeln( " <TH>Radius</TH>" );; 36 writeln( " <TH>Circle Area</TH>" );; 37 writeln( " <TH>Ellipse Area (<EM>R</EM> = 1)</TH>" );; 38 writeln( " </TR>" ); 39 } 40 41 var R = 1.0; 42 for ( var r = R - 1; r < R + 1; r += 0.1 ) { 43 circle = new Circle( r ); 44 ellipse = new Ellipse( r, R ); 45 with ( document ) { 46 writeln( " <TR>" ); 47 writeln( " <TD>" + r + "</TD>" ); 48 writeln( " <TD>" + circle.area() + "</TD>" ); 49 writeln( " <TD>" + ellipse.area() + "</TD>" ); 50 writeln( " </TR>" ); 51 } 52 } 53 54 document.writeln( "</TABLE>" ); 55 56 </SCRIPT> 57 58 </BODY> 59 </HTML>