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: Dimitar Stefanov en 12 de Febrero 2016, 17:38
-
Posible solución del ejercicio CU01145E del cursjo JavaScript desde cero.
EJERCICIO
Una de las utilidades de crear objetos vacíos es evitar conflictos de nombres. Supón que creas funciones como:
function crearEntrada() { // hacer algo }
function crearSalida() { // hacer algo }
El problema que se presenta es que en otro momento se pueda definir otra función con el mismo nombre que alguna de las ya definidas, creando un conflicto de nombres.
Crea un objeto vacío denominado GestionDeUsuarios y añádele dos métodos: un método preguntarNombre y un método despedir. Al invocar GestionDeUsuarios.preguntarNombre() se debe establecer la propiedad nombre del objeto con un nombre introducido por el usuario y un id de usuario introducido también por el usuario. Al invocar el método GestionDeUsuarios.despedir() se debe mostrar un mensaje de despedida “Hasta luego nombreDeUsuario” donde nombreDeUsuario será el nombre correspondiente.
Responde la siguiente pregunta: ¿si se crea una función despedir entrará en conflicto con el método definido?
Solución:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Curso JavaScript</title>
<script type="text/javascript">
var GestionDeUsuarios={
bienvenida:function(){
this.nombre=prompt('Introducir su nombre');
this.id=prompt('Introducir su Id');
},
despedir:function(){alert('Hasta luego '+this.nombre)}
}
GestionDeUsuarios.bienvenida();
GestionDeUsuarios.despedir();
function despedir(){
alert('Como podemos comprobar no se crea un conflicto entre las dos funciones "despedir()" porque esta es externa y la otra es interna (está dentro de un objeto definido creado con el método Sigleton)');
}
</script>
</head>
<body>
<div style="text-align: center; margin: 20% 0;">
<input type="button" value="Invocar la segunda función 'despedir()' " onclick="despedir()"></input>
</div>
</body>
</html>
Gracias.
PD: Contesto a la última pregunta mediante el botón en el código.
-
Hola!
Buena idea crear la función con el mismo nombre para demostrar que no hay conflicto de nombres ;)
Hay una frase que debes mejorar: está dentro de un objeto definido creado con el método Sigleton (es Singleton)
Se debería expresar como:
"está dentro del espacio de nombres creado por un objeto"
Saludos!
-
Buenas, César Krall.
Primero felicitarte por el curso.
Sí, con los conceptos soy un desastre. Se me olvidan, me equivoco...pero creo que con más práctica y más ejercicios mejoraré.
Sobre la idea de crear 2 funciones con el mismo nombre, es que creo que es la mejor manera de ver un código cómo funciona haciéndolo funcionar de la manera que quieres probar.
Saludos.