Autor Tema: ejemplo qué es un closure JavaScript this significados namespace CU01168E  (Leído 1940 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Dejo el ejercicio resuelto del tema CU01168E this javascript significados namespace ejemplo ejercicio, del curso básico de programación para desarrolladores JavaScript.

Citar
a) ¿Por qué se muestran diferentes mensajes si en ambos alert estamos invocando this?

Porque cada this se invoca en una función diferente (una es interna a la otra) y cada función hace referencia a un elemento diferente.

Citar
b) Modifica el código para que el mensaje que se muestre con retardo muestre lo mismo que el mensaje que se muestra sin retardo. Para ello, haz que en la función anónima sea conocida la referencia a this que existe en la función externa.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
<script type="text/javascript">

function ejemplo()
{
var cabecera = document.querySelector('#cabecera');
var respuestaCabecera = function ()
{   theThis=this
alert(theThis);
  setTimeout(function (){alert(theThis);}, 2000);
};
cabecera.addEventListener('click', respuestaCabecera, false);
}

</script>
</head>
<body onload="ejemplo()">
<div id="cabecera">
<h2>Cursos aprenderaprogramar.com HAZ CLICK AQUÍ</h2>
<h3>Ejemplos JavaScript</h3>
</div>
</body>
</html>

« Última modificación: 20 de Junio 2018, 20:09 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, todo bien. Copio una explicación que me ha parecido interesante: "Toda función define un ámbito y una función dentro de otra función puede hacer que this no se refiera a lo mismo según dónde lo usemos. Por ejemplo, si tenemos una función anónima dentro de otra, this en la función externa puede estar haciendo referencia al objeto envolvente mientras que this en la función anónima puede estar haciendo referencia al objeto global window.

La solución para mantener una referencia a this en una función anónima interna puede estar en crear un closure. Definiríamos como variable local a la función externa var that = this;, y luego en la función anónima interna haríamos referencia a that, variable auxiliar que nos sirve para mantener la referencia deseada."


Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".