Hola a todos,hoy voy a redactar algo sobre el contexto de las funciones en términos de javascript.
Todas las funciones en JavaScript están ligadas a un objeto en particular, incluso aquellas que definamos directamente en el scope global. Este objeto es el que determina dicho contexto, en otras palabras, el contexto de una función está definido por el objeto del cuál forman parte y es accesible a través de la propiedad
this.
¿Confuso?, veamos el siguiente ejemplo:
(function contextTest()
{
this.myVar = 'Test';
})();
alert(window.myVar);
Si ejecutamos el código anterior veremos que myVar está disponible en el objeto window y su valor es 'Test'.
Si recuerdan les mencione que las funciones definidas en el scope global también están ligadas a un objeto... exacto!!! el objeto
window es el contexto de estas funciones.
Cambiemos un poco el ejemplo.
function contextTest()
{
if(this==window)
alert('EL objeto window es mi contexto');
};
contextTest();
Ahora sí, un poco más claro.
Veamos otro ejemplo:
var util = {
myName:'',
test:function()
{
if(this==window)
{
alert('El objeto window es mi contexto.');
}else
alert('El objeto window ya no es mi contexto.');
}
};
util.test();
Ejecutando el código vemos que
this dentro de la función
test ya no hace referencia al objeto
window, ahora
this es una instancia de nuestro objeto
util.
De esta forma podemos hacer lo siguiente:
var util = {
myName:'',
test:function()
{
this.myName = 'instancia de util';
}
};
util.test();
alert(util.myName);
Espero haya quedado un poco más claro. En la siguiente entrada veremos como cambiar el contexto a nuestro antojo.
Saludos.
Comentarios