miércoles, 12 de febrero de 2014

Acceder a las propiedades de una función desde una función interna

Buenas a todos!

this se sobreescribe siempre que ejecutamos una nueva función en javascript.
Por esta razón, cuando queremos acceder desde una función interna a las propiedades de su parent (función padre), no podemos hacerlo mediante la palabra clave this.
Se puede acceder a sus propiedades, creando una variable en la función padre que tenga una copia de la instancia this. Así conseguimos ampliar el scope de this para que sea accesible desde la función interna.

function Parent(){
var self = this;
this.nombre = "parent";
var funcion_interna = function(){
this.nombre = "child";
alert(self.nombre + " " + this.nombre);
};
funcion_interna();
}

var p = new Parent();


La salida de esta función es: "parent child".

Este tipo de relaciones pueden ser útiles, cuando creamos funciones ajax o event handlers que deben trabajar con propiedades de instancia.

Un saludete para todos!