[box]<html>
<body>
<script type="text/javascript">
/*create a sound object for making sounds*/
sound = function(noise){
this.setNoise(noise);
}
/*add new prototype to output the noise */
sound.prototype = {
/*set the noise echoed on sound.out)*/
setNoise : function(noise){
this.noise = noise || 'plain sound';
},
/*output the noise*/
out : function(numTimes){
var noise ='"';
for(x=0;x<numTimes;x++){
noise += this.noise;
if(x<numTimes-1){ noise +=', ';}
}
return noise+'!"';
}
}
/*create a animal object for making animals that make sounds*/
animal = function(name, noise){
this.setName(name);
this.vocals = new sound(noise);
}
animal.prototype = {
/*set the name of the animal*/
setName : function(name){
this.name = name || 'another animal';
},
/*prototype to wrap sound.out*/
talk : function(times){
alert(this.name +" said "+this.vocals.out(times));
},
/*prototype to wrap sound.setNoise*/
changeVocals : function(noise){
mySquirrel.vocals.setNoise(noise);
}
}
/*instantiate an animal ( a squirrel that barks) and make it talk */
mySquirrel = new animal('squirrelio', 'bark');
mySquirrel.talk(3);
mySquirrel.changeVocals('ruff');
mySquirrel.talk(4);
</script>
</body>
</html>
[/box]
A lot of people have come up with different methods for dealing with inheritance. Here is one page that explains it


Once you are into the prototyping system you can make your own system to make extending and inheriting easier.
Ah, but i did read it.. i didn't understand it, but i read it.
I have a newfound respect for Javascript. I did know about prototypes, but since I come from a class-based OOP background I probably don't grok them completely. Is there some way that prototypes can have their own prototypes, ie inheritance? Or am I missing a better way to do the same thing?
[The reason I'm all into this now is that I'm doing the database backend for our calendar in XUL :::link::: , and since XUL does not provide any kind of transactional form processing like X/HTML does, the only way to interact with the server is through XMLHttpRequest and its ilk.]
- Z