Buenas, bermartinv.
Veo el código bien y las observaciones por parte de Ogramar.
Sólo una cosita que se te ha escapado en el segundo código que has puesto. Creo que en el ejemplo de las funciones externas querías poner function aumentar y no disminuir, porque realmente, después de la corrección por tu parte, lo que haces es aumentar las personas curadas. Pero ya te digo, supongo que es por no darte cuenta.
Para ver que el método "curarPersonas" funciona correctamente, yo invoqué primero el método "mostrarDatos" luego "curarPersonas" y después otra vez "mostrarDatos". De dicha forma realmente se observa que la cantidad de las personas curada sube (sin que tengas que mirar el código "por dentro").
Mira, mi código ha quedado de la siguiente forma:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Ejemplo aprenderaprogramar.com</title>
<script type="text/javascript">
function medico(){
this.nombre='Juan Eslava';
this.personasCuradas=8;
this.especialidad='traumatología';
this.curarPersonas=function(){
this.personasCuradas=this.personasCuradas+1;
}
this.mostrarDatos=function(){
var msg='El médico se llama: '+this.nombre+', su especialidad es: '+this.especialidad+' y lleva curadas: '+this.personasCuradas;
alert(msg);
}
}
function ejemploObjetos(){
var datosMedico= new medico();
var datosMedico2=new medico();//no se ve la diferencia, porque las propiedades en la función medico(); tienen el mismo valor, pero vemos que el código funciona.
datosMedico.mostrarDatos();
datosMedico.curarPersonas();
datosMedico.mostrarDatos();
datosMedico.curarPersonas();
datosMedico.mostrarDatos();
datosMedico2.mostrarDatos();
datosMedico2.curarPersonas();
datosMedico2.mostrarDatos();
datosMedico2.curarPersonas();
datosMedico2.mostrarDatos();
}
</script>
</head>
<body>
<div id="cabecera">
<h2>Cursos aprenderaprogramar.com</h2>
<h3>Ejemplos JavaScript</h3>
</div>
<div style="color: blue;" id="pulsador" onclick="ejemploObjetos()">Probar ejercicio</div>
</body>
</html>
También tengo que decir que no tiene mucho sentido crear dos objetos definidos con los mismos valores, pero como en el ejercicio ponía que siempre se tenía que mostrar que el médico se llama: Juan Eslava y es traumatólog, decidí que no tendía que pasar los valores como parámetros de una función a la otra, pero debo admitir que como lo has hecho tu, se ve que son dos médicos distintos.
Saludos.