Foros del Web » Programando para Internet » Javascript »

Leer el valor de una variable global en una clase

Estas en el tema de Leer el valor de una variable global en una clase en el foro de Javascript en Foros del Web. Hola señores Estoy preparando una funcion a modo de clase para evitar el problema de los conflictos de las variables y funciones con un plugin ...
  #1 (permalink)  
Antiguo 07/03/2011, 08:13
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Leer el valor de una variable global en una clase

Hola señores

Estoy preparando una funcion a modo de clase para evitar el problema de los conflictos de las variables y funciones con un plugin de jQuery que aplique en un proyecto.

Mi clase la estoy escribiendo desde cero (no con jQuery) y estoy teniendo problemas para tomar el valor de una variable global desde otra funcion (prototype). Tengo lo siguiente:

Código:
var showFotos = function (id,cl)
{
	if ( !document.getElementById(id) ) return;
	//
	var ths = this, glb = {};
	glb.obs = [], glb.obs = ths.clsFltr (id,'li',cl);
	glb.probar = 'JuniHH';
	//alert( glb.probar );
	//
	for (var i = 0, c = glb.obs.length; i < c; i++) ths.setOb ( glb.obs[i] );
};

showFotos.prototype.setOb = function (ob)
{
	var ths = this;
	//
	ob.onclick = function ()
	{
		alert( showFotos.prototype.glb.probar );
	};
};
No logro capturar el valor de "probar" declarado dentro de "glb". En este caso "glb" es mi variable global a la que necesito acceder desde "setOb".

Intente cambiar "alert(showFotos.prototype.glb.probar);" por "alert(ths .glb.probar);" que entiendo debe ser igual, pero no nada. ¿Que puedo estar haciendo mal?

Gracias de antemano a cualquier ayuda o idea que me puedan facilitar.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #2 (permalink)  
Antiguo 07/03/2011, 08:40
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Leer el valor de una variable global en una clase

Hola:

Lo de prototype debes usarlo solo una vez en la declaración, luego solo debes usar el resto... pero revisa la ortografía(sintaxis) primero ya que tienes algunos errores...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 07/03/2011, 08:41
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Leer el valor de una variable global en una clase

Una manera sería convertir la variable en una propiedad pública del objeto, es decir, hacer algo como esto: this.propiedad='lo que sea'; Un ejemplo de esto:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
</
head>

<
body>
<
div id="pp" style="height:30px; background:#F00"></div>
<
script type="text/javascript">
var 
showFotos = function (id,cl)
{
    if ( !
document.getElementById(id) ) return;
    
//
    
var ths this,glb;
    
ths.glb=glb= {};
    
glb.obs = [];
    
glb.obs.push(document.getElementById(id));
    
// glb.obs = ths.clsFltr (id,'li',cl);
    
glb.probar 'JuniHH';
    
    
//
    
for (var 0glb.obs.lengthci++) ths.setOb glb.obs[i] );
};

showFotos.prototype.setOb = function (ob)
{
    var 
ths this;
    
//
    
ob.onclick = function ()
    {
        
alertths.glb.probar );
    };
};
var 
s=new showFotos('pp')
</script>
</body>
</html> 
Otra manera (la que más uso en lo personal) es generar un namespace, es decir, una variable global de este tipo:
Código PHP:
var ns={}
//y como está en el contexto global podés en cualquier momento hacer cosas como esta:
ns.miVar='lo que sea';
ns.miVar2='otra cosa';
//y ya podés referenciar esas variables desde cualquier lado con un :
alert(window.ns.miVar); 
  #4 (permalink)  
Antiguo 07/03/2011, 09:05
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Leer el valor de una variable global en una clase

@caricatos: ¿Cuales serian esos errores de sintaxis?

@Panino5001: Como tenía tiempo de esperar respuesta, justo practique la segunda alternativa que pusiste, que siempre sera la mas "facil" si quiero evitar conflictos con otras variables y funciones. Muchisimas gracias por tu ayuda, me sirvio de mucho. Corregire de inmediato mi clase.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #5 (permalink)  
Antiguo 07/03/2011, 09:05
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Leer el valor de una variable global en una clase

Cita:
Iniciado por junihh Ver Mensaje
Código:
var showFotos = function (id,cl)
{
	if ( !document.getElementById(id) ) return;
	//
	var ths = this, glb = {};
	glb.obs = [], glb.obs = ths.clsFltr (id,'li',cl);
	glb.probar = 'JuniHH';
	//alert( glb.probar );
	//
	for (var i = 0, c = glb.obs.length; i < c; i++) ths.setOb ( glb.obs[i] );
};

showFotos.prototype.setOb = function (ob)
{
	var ths = this;
	//
	ob.onclick = function ()
	{
		alert( showFotos.prototype.glb.probar );
	};
};
No logro capturar el valor de "probar" declarado dentro de "glb". En este caso "glb" es mi variable global a la que necesito acceder desde "setOb".
Quizás me esté equivocando yo, pero
Código Javascript:
Ver original
  1. var ths = this, glb = {};
declara glb como una variable local, por lo que después no podrás acceder a ella. Puedes usar la solución de @Panino, con this.propiedad .
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #6 (permalink)  
Antiguo 07/03/2011, 09:14
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Leer el valor de una variable global en una clase

@_cronos2: Si, fue que al declarar "glb" dentro de "showFotos", ya seria simple llamarla como "showFotos.prototype.glb.probar", pero no funciono. Gracias.
__________________
JuniHH
- Mi blog
- Mi portafolio

Etiquetas: clase, global, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:43.