Añadir métodos a prototipos JS

Estoy repasando javascript porque no lo toco desde que era algo muy denostado y ahora con AJAX, JQuery y HTML5 se hacen auténticas maravillas, y así aprendo cosillas/mejoro CV.

El caso es que quiero añadir un método a un "objeto" que yo he creado, pero no lo logro (estoy siguiendo los cursos w3schools, creo que están muy bien, pero recomendaciones son bienvenidas)

Al turrón.

Creo un prototipo
function myVehiculo(ruedas,tipo){
   myVehiculo.prototype.ruedas=0;
   myVehiculo.prototype.tipo="normal";
   myVehiculo.prototype.getRuedas=function getRuedas(){
      alert('Ruedas= '+this.ruedas);
   }
}


"Heredo"
coche=new myVehiculo();
moto=new myVehiculo();
bici=new myVehiculo();


Vale, todo genial. Ahora quiero añadir un método a bici. SIguiendo ejemplos con los objetos predeterminados, lo hago así:
bici.prototype.pedales=2;
bici.prototype.getPedales=function getPedales(){
   alert('Pedales= ' + bici.pedales);
   }

Peroooo no va.
bici.prototype.getPedales=function getPedales()

En esta línea quítale el getPedales después del function.
RC9 escribió:bici.prototype.getPedales=function getPedales()

En esta línea quítale el getPedales después del function.


¿Te refieres a dejarlo...

bici.prototype.getPedales=function {
   alert('Pedales= ');
   }


Sin nombre de función obviamente no va. Pero es que ya al no cerrar bien la cabecera de la función deja de funcionar todo
Es como RC9, el nombre se lo estás poniendo ya después del prototype, es solo que has olvidado el ().

Quedaría así

bici.prototype.getPedales = function() {

}
Nada, no me sale el alert añadiendo como comentais
He estado revisándolo y algo no cuadra porque no funciona. He estado haciendo pruebas y de esta forma si que funciona.

<script>
   var A = function(ruedas, tipo){};
   A.prototype.constructor = A;
   A.prototype.ruedas = 0;
   A.prototype.tipo = "normal";
   A.prototype.getRuedas = function(){
      return "Ruedas: " + this.ruedas;
   }
   A.prototype.setRuedas = function(ruedas){
      this.ruedas = ruedas;
   }
      
   var B = function(){};
   B.prototype = new A;
   B.prototype.constructor = B;
   B.prototype.pedales = 2;
   B.prototype.getPedales = function(){
      return "Pedales: " + this.pedales;
   }
   var b = new B();
   alert(b.getPedales());
   b.setRuedas(2);
   alert(b.getRuedas());
</script>
7 respuestas