Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 11 de Enero 2018, 11:38
-
Hola. Dejo el código de call JavaScript. Diferencia con apply. Constructores con herencia en cadena. Invocar this. Ejercicio CU01150E del manual pdf de programación web con JavaScript.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
<script type="text/javascript">
/* =====================================================================
/* ========================= EJERCICIO 1 =============================
/* ===================================================================== */
function Persona (nombre, nacionalidad)
{
this.nombre = nombre || 'Desconocido';
this.nacionalidad = nacionalidad || 'Desconocida';
}
Persona.prototype.mostrarNacionalidad = function()
{
alert('Hola mi nacionalidad es : '+this.nacionalidad);
}
function Medico (centroTrabajo,nombre, nacionalidad)
{
Persona.call(this,nombre,nacionalidad);
this.centroTrabajo=centroTrabajo || 'Desconocido';
}
Medico.prototype=new Persona();
function medicoEspecialista (especialidad,centroTrabajo,nombre,nacionalidad)
{
Medico.call(this,centroTrabajo,nombre,nacionalidad)
this.especialidad=especialidad || "Desconocida";
}
medicoEspecialista.prototype=new Medico
/* =====================================================================
/* ========================= EJERCICIO 2 =============================
/* ===================================================================== */
function Persona2 (nombre)
{
this.nombre = nombre || 'Nombre desconocido';
this.saludar = function ()
{
alert('Hola, soy ' + this.nombre+"\n");
}
}
Persona2.prototype.definicion = 'Ser humano';
function Profesor (institucionAcademica ,nombre)
{
Persona2.call(this,nombre)
this.institucionAcademica = institucionAcademica || 'Institución desconocida';
}
Profesor.prototype = new Persona2();
function ProfesorInterino(tiempoTrabajado,institucionAcademica,nombre)
{
Profesor.call(this,institucionAcademica,nombre)
this.tiempoTrabajado = tiempoTrabajado || 0;
}
ProfesorInterino.prototype = new Profesor();
function ProfesorTitular(tiempoTrabajado,institucionAcademica,nombre)
{
Profesor.call(this,institucionAcademica,nombre)
this.tiempoTrabajado = tiempoTrabajado || 0;
}
ProfesorTitular.prototype = new Profesor();
/* =====================================================================
/* ========================= FIN EJERCICIO 2 ==========================
/* ===================================================================== */
function ejemploObjetos()
{
var Especialista1=new medicoEspecialista("Dentista","Los Guinchos","Pascual","España")
Especialista1.mostrarNacionalidad();
var Especialista2=new medicoEspecialista("Traumatologo","","","Argentina");
var Especialista3=new medicoEspecialista("","Breña Baja","Ramiro Gutierrez","Chile");
msg="";
msg=msg+"EJERCICIO 1\n\n";
msg=msg+"Especialidad: "+Especialista1.especialidad+"\n"+"Centro medico: "+Especialista1.centroTrabajo+"\n";
msg=msg+"Me Llaman: "+Especialista1.nombre+"\n"+"Mi Nacionalidad es : "+Especialista1.nacionalidad+"\n\n";
msg=msg+"Especialidad: "+Especialista2.especialidad+"\n"+"Centro medico: "+Especialista2.centroTrabajo+"\n";
msg=msg+"Me Llaman: "+Especialista2.nombre+"\n"+"Mi Nacionalidad es : "+Especialista2.nacionalidad+"\n\n";
msg=msg+"Especialidad: "+Especialista3.especialidad+"\n"+"Centro medico: "+Especialista3.centroTrabajo+"\n";
msg=msg+"Me Llaman: "+Especialista3.nombre+"\n"+"Mi Nacionalidad es : "+Especialista3.nacionalidad+"\n\n";
presentarDatos(msg)
//************************
//Presentar datos del Ejercicio 2
//************************
msg="";
var ProfesorTitular1 =new ProfesorTitular(8,"Universidad de León","Juan");
ProfesorTitular1.saludar();
msg=msg+"Hola soy un Profesor Titular y mi Nombre es : "+ ProfesorTitular1.nombre+"\n";
msg=msg+"Estudie en: "+ ProfesorTitular1.institucionAcademica+"\n";
msg=msg+"Y los años trabajados son: "+ ProfesorTitular1.tiempoTrabajado+"\n";
msg=msg+"Soy un :"+ ProfesorTitular1.definicion+"\n\n";
var ProfesorInterino =new ProfesorTitular('22',"Universidad de Salamanca","Patrocinio");
msg=msg+"Hola soy un Profesor interino y mi Nombre es : "+ ProfesorInterino.nombre+"\n";
msg=msg+"Estudie en: "+ ProfesorInterino.institucionAcademica+"\n";
msg=msg+"Y tengo "+ ProfesorInterino.tiempoTrabajado +" meses trabajados \n";
msg=msg+"Soy un :"+ ProfesorInterino.definicion+"\n\n";
presentarDatos(msg)
}
function presentarDatos(msg)
{
alert(msg);
}
/* =====================================================================
/* ======================== FIN EJERCICIO =============================
/* ===================================================================== */
</script>
<style type="text/css">
body{background-color:green;}
h1,h2,h3{
text-align:center;
margin:0;
padding:0;
color:white;
width:300;
height:200;
}
.boton {
border:outset white 2px;
width:200px;
border-radius:25px 25px;
box-shadow:3px 3px 2px 2px #AFF6AF;
text-align:center;
background-color:#90EE90;
color:black;
font-size:19px;
margin-top :2px;
margin-left:5px;
margin-bottom:5px;
}
</style>
</head>
<body>
<div id="cabecera">
<h2>Cursos aprenderaprogramar.com</h2>
<h3>Ejemplos JavaScript</h3></div>
<div class="boton" onclick="ejemploObjetos()" >Comprobar</div>
</body>
</html>
Gracias.
;)
-
Buenas paramonso, una vez más remitirte a https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se indica la forma de poner título a los temas
Ambos ejercicios (el 1 y el 2) los veo bien resueltos
Donde dice medicoEspecialista.prototype=new Medico debería decir medicoEspecialista.prototype=new Medico(); aunque creo que el código lo está aceptando igualmente.
Para quien esté interesado en comprobar el mecanismo de herencia, una simple prueba que se puede hacer es comentar //medicoEspecialista.prototype=new Medico y ejecutar viendo los mensajes de consola. Se obtendrá el error "TypeError: Especialista1.mostrarNacionalidad is not a function"
Salu2
-
Hola Ogramar.
Gracias por corregirme lo de los paréntesis.
En JavaScript los traga sin miramientos en vb.net me llevan de pu.... cu...
Gracias.
;)