Вот вроде бы, что то похожее на наследование получилось
Делаем кролика, лису и волка, они говорят имя своего класса.
А потом бегут кто быстрее.
<script>
function Animal() {
this.x;
this.y;
this.out=false;
}
Animal.prototype = {
move:function(){
var width=$('canvas').width;
var height=$('canvas').height;
this.x+=this.distance;
if(this.x>width) {this.out=true;}
},
echo : function(){alert(this.name);},
setCoords : function(x,y){
this.x=x;
this.y=y;
}
}
function Rabbit() {
this.name = 'Кролик';
this.distance = 3;
}
function Wolf() {
this.name = 'Волк';
this.distance = 5;
}
function Fox() {
this.name = 'Лиса';
this.distance = 4;
}
var animal = new Animal();
Rabbit.prototype = Wolf.prototype = Fox.prototype = animal;
var rabbit1 = new Rabbit();
var wolf1 = new Fox();
var fox1 = new Wolf();
rabbit1.echo();
wolf1.echo();
fox1.echo();
rabbit1.setCoords(2,30);
wolf1.setCoords(2,100);
fox1.setCoords(2,150);
function $(id){return document.getElementById(id);}
window.onload = function(){
canvas=$('canvas').getContext('2d');
interval=setInterval(function(){draw(canvas);},100);
}
function draw(ctx){
ctx.clearRect(0,0,400,200);
rabbit1.move();
fox1.move();
wolf1.move();
ctx.beginPath();
ctx.arc(rabbit1.x,rabbit1.y,2,0,Math.PI*2,true); // Внешний круг
ctx.stroke();
ctx.beginPath();
ctx.arc(wolf1.x,wolf1.y,2,0,Math.PI*2,true); // Внешний круг
ctx.stroke();
ctx.beginPath();
ctx.arc(fox1.x,fox1.y,2,0,Math.PI*2,true); // Внешний круг
ctx.stroke();
if(rabbit1.out && rabbit1.out && rabbit1.out) {clearInterval(interval);}
}
</script>
<canvas id='canvas' width=400 height=200 style="border:1px solid #888888"></canvas>