Buenos días 
derkenuke 
Te comento una cosa, y a ver que opinas... 
Con el setTimeOut, te da un error, de que el objeto no está definido (me refiero en esto) 
 Código PHP:
    function coxe() {
    this.velocidad=50;
    this.frenar=function() {
        if(this.velocidad>0) {
            this.velocidad--;
            setTimeout("this.frenar()", 100);
        }
    }
} 
    
  eso, puedes solventarlo con esto: 
 Código PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
<html>
<head>
    <title>Untitled</title>
    <script language="JavaScript1.2" type="text/javascript">
        function coche_object ()
        {
            this.velocidad = 50;
            this.timeOut = null;
            
            this.frena = function ()
            {
                if(coche.velocidad > 0)
                {
                    coche.velocidad--;
                    coche.timeOut = setTimeout("coche.frena()", 100);
                }
                else
                {
                    if (coche.velocidad == 0)
                    {
                        alert ("Hemos frenado del todo");
                        clearInterval(coche.timeOut);
                    }
                }
            }
        }
        var coche = new coche_object ();
    </script>
</head>
 
<body>
<a href="javascript:coche.frena()">Pulsame</a>
 
 
</body>
</html> 
   
  Defines el Objeto antes de usarlo, como si usaras una 
clase, pero sin ser una clase en su esencia real. 
Espero que esto te pueda ser útil, y me des una opinión de si orientarlo de esa manera... 
Un saludo, y a ver que opinas.