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: pedro,, en 18 de Octubre 2015, 22:12

Título: Formas de crear objetos JavaScript cómo añadir propiedades y métodos CU01145E#
Publicado por: pedro,, en 18 de Octubre 2015, 22:12
Hola, dejo otro ejercicio JavaScript

Citar
EJERCICIO
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(user) se debe crear un objeto de tipo usuario con id de usuario user y almacenar su nombre e id de usuario. Al invocar el método GetionDeUsuarios.despedir(user) 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?

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style>
#pulsador {padding:15px; width: auto; display: inline-block; margin: 25px; cursor: pointer; color: yellow; border-radius: 40px; background: purple;}
</style>
<script type="text/javascript">
var gestionDeUsuarios = {};
Object.defineProperty(gestionDeUsuarios,'usuario',{value:'',writable:true},'idUsuario',{value:0,writable:true});
gestionDeUsuarios.preguntarNombre = function(user, idUser){
var usuario = prompt('Introduzca el nombre del usuario: ');
var idUsuario = prompt('Introduzca el id del usuario: ');
gestionDeUsuarios.usuario=usuario;
gestionDeUsuarios.idUsuario=idUsuario;
}
gestionDeUsuarios.despedir = function(usuario){
alert('(Desde método despedir)Hasta luego ' + gestionDeUsuarios.usuario);
}
gestionDeUsuarios.preguntarNombre();
gestionDeUsuarios.despedir();
despedir();
function despedir(){
alert('(Desde función despedir())Hasta luego ' + gestionDeUsuarios.usuario);
}
</script>
</head>
<body>
<div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2></div>
<div id ="pulsador" onclick="despedir()"> Probar </div>
</body>
</html>

En cuanto a la pregunta:
Diría que no, creé una función con el mismo nombre que uno de los método y funcionan correctamente.

Saludos.

Título: Re:Formas de crear objetos JavaScript cómo añadir propiedades y métodos CU01145E
Publicado por: César Krall en 22 de Octubre 2015, 11:58
Hola Pedro!!

Revisando tu código y respuestas (después de discutirlo un rato) hemos visto que además de que tu código está bien planteado para los objetivos del ejercicio, que era comprobar cómo el uso de métodos de objetos permite evitar el conflicto de nombres respecto a funciones definidas en el ámbito global, convenía modificar la redacción del ejercicio para que quedara más clara.

La redacción inicial era:

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(user) se debe crear un objeto de tipo usuario con id de usuario user y almacenar su nombre e id de usuario. Al invocar el método GetionDeUsuarios.despedir(user) se debe mostrar un mensaje de despedida “Hasta luego nombreDeUsuario” donde nombreDeUsuario será el nombre correspondiente.


Ahora la hemos dejado:

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.

Teniendo en cuenta estos cambios hemos modificado ligeramente tu código para dejar la respuesta así.

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style>
#pulsador {padding:15px; width: auto; display: inline-block; margin: 25px; cursor: pointer; color: yellow; border-radius: 40px; background: purple;}
</style>
<script type="text/javascript">
var gestionDeUsuarios = {};
Object.defineProperty(gestionDeUsuarios,'usuario',{value:'',writable:true},'idUsuario',{value:0,writable:true});
gestionDeUsuarios.preguntarNombre = function(){
var usuario = prompt('Introduzca el nombre del usuario: ');
var idUsuario = prompt('Introduzca el id del usuario: ');
gestionDeUsuarios.usuario=usuario;
gestionDeUsuarios.idUsuario=idUsuario;
}
gestionDeUsuarios.despedir = function(){
alert('(Desde método despedir) Hasta luego ' + gestionDeUsuarios.usuario);
}

function despedir(){
alert('(Desde función despedir()) ... Hasta luego ' + gestionDeUsuarios.usuario);
}

function testObjetos() {
gestionDeUsuarios.preguntarNombre();
gestionDeUsuarios.despedir();
alert ('Tenemos un objeto gestionDeUsuarios con propiedades nombre: '+gestionDeUsuarios.usuario + 'e id: '+gestionDeUsuarios.idUsuario);
despedir();
}

</script>
</head>
<body>
<div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2></div>
<div id ="pulsador" onclick="testObjetos()"> Probar </div>
</body>
</html>

Hemos trasladado la ejecutoria a una función testObjetos para que se vea más clara la traza. Perdona las molestias, si te queda alguna duda consúltala.

Saludos!!
Título: Re:Formas de crear objetos JavaScript cómo añadir propiedades y métodos CU01145E
Publicado por: pedro,, en 22 de Octubre 2015, 21:36
Hola Cesar, gracias por la corrección. Y molestia ninguna, faltaría mas.