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>&nbsp;=&nbsp;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>