tengo este código (JSFiddle)¿Cómo puedo aplicar este método "público" correctamente?
var OBJ = function(){
var privateVar = 23;
var self = this;
return {
thePrivateVar : function() {
return privateVar;
},
thePrivateVarTimeout : function() {
setTimeout(function() { alert(self.thePrivateVar()); } , 10);
}
}
}();
alert(OBJ.thePrivateVar());
OBJ.thePrivateVarTimeout();
Ésta es una abstracción de un verdadero problema que estoy teniendo.
Por lo tanto - Yo esperaría que la llamada a OBJ.thePrivateVarTimeout()
que esperar 10
y luego alert
con 23 (que yo quiero que el acceso a través de otro método expuesto).
Sin embargo, self
parece no estar configurando correctamente. Cuando configuro self = this
, parece que this
no es una referencia a la función sino una referencia al objeto global. ¿Por qué es esto?
¿Cómo puedo hacer que el método público thePrivateVarTimeout
llame al otro método público thePrivateVar
?
* ¿Por qué es esto? * Porque se está llamando a la función normalmente ('func()'). En este caso, 'this' siempre se refiere al objeto global. Si desea que se refiera a un objeto vacío, llámelo con 'nuevo' o asigne uno:' var self = {}; '. –
@FelixKling Gracias esto hace 'self' establecido correctamente. Todavía no puedo usarlo para invocar 'thePrivateVar'. Creo que la respuesta de Raynos es la forma en que debería hacerlo. –