Foros del Web » Programando para Internet » Javascript »

Sobre scope chain en handlers

Estas en el tema de Sobre scope chain en handlers en el foro de Javascript en Foros del Web. Código: var MiObjeto = { objetoPropiedad1: { handler: function() { alert(MiObjeto.propiedadObjeto2.nombre); }, addHandler: function () { var element = document.getElementById("un-id"); element.addEventListener("click", this.handler, false); } }, ...
  #1 (permalink)  
Antiguo 12/04/2012, 13:25
 
Fecha de Ingreso: julio-2009
Ubicación: Buenos Aires
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Sobre scope chain en handlers

Código:
var MiObjeto = {
	
	objetoPropiedad1: {
		
		handler: function() {
			alert(MiObjeto.propiedadObjeto2.nombre);
		},
		
		addHandler: function () {
			var element = document.getElementById("un-id");
			element.addEventListener("click", this.handler, false);
		}
	},
	
	objetoPropiedad2: {
		
		nombre: "Pedro",
		
		edad: 29
	}
}

MiObjeto.addHandler();
Es un objeto exterior con dos propiedades, dos objetos interiores.
El primer objeto interior toma un elemento del DOM y le añade un handler.

El handler hace referencia a la propiedad nombre del segundo objeto interior.

Mis dudas son:


1 - ¿La cadena de ámbito (Scope chain mejor) del handler contiene al objetoPropiedad2?.

2 - ¿Y contiene a MiObjeto?.

Gracias por leer. Espero haya sido claro.
  #2 (permalink)  
Antiguo 12/04/2012, 14:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Sobre scope chain en handlers

el objeto no tiene la propiedad addHandler
Cita:
MiObjeto.objetoPropiedad1.addHandler();
estas usando this.handler, cuando no usas el constructor
Cita:
function() {MiObjeto.objetoPropiedad1.handler()}
propiedadObjeto2 no será objetoPropiedad2??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 12/04/2012, 14:52
Avatar de sneyder05  
Fecha de Ingreso: enero-2009
Ubicación: Cali
Mensajes: 172
Antigüedad: 15 años, 3 meses
Puntos: 17
Mensaje Respuesta: Sobre scope chain en handlers

Saludos Trafficx

Revisando tu código concuerdo conIsaBelM, las referencias a propiedades del objeto están mal, a continuación te dejo un código para que lo pruebes y nos cuentes

Código PHP:
var MiObjeto = {    
        
objetoPropiedad1: {        
            
handler: function() {
                
alert(MiObjeto.objetoPropiedad2.nombre);
            },        
            
addHandler: function () {
                var 
element document.getElementById("nick");
                
element.addEventListener("click"this.handlerfalse);
            }
        },
    
        
objetoPropiedad2: {        
            
nombre"Pedro",        
            
edad29
        
}
    }

    
MiObjeto.objetoPropiedad1.addHandler(); 
__________________
{
job: 'freelance',
contact: '[email protected]'
}
  #4 (permalink)  
Antiguo 12/04/2012, 15:10
 
Fecha de Ingreso: julio-2009
Ubicación: Buenos Aires
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Respuesta: Sobre scope chain en handlers

Mi ejemplo tenía errores, vamos de nuevo:

Código:
var MiObjeto = {
	
	objetoPropiedad1: {
		
		handler: function() {
			alert(MiObjeto.objetoPropiedad2.nombre);
		},
		
		addHandler: function () {
			var element = document.getElementById("un-id");
			element.addEventListener("click", MiObjeto.objetoPropiedad1.handler, false);
		}
	},
	
	objetoPropiedad2: {
		
		nombre: "Pedro",
		
		edad: 29
	}
}

MiObjeto.objetoPropiedad1.addHandler();
Es un objeto exterior con dos propiedades, dos objetos interiores.
El primer objeto interior toma un elemento del DOM y le añade un handler.

El handler hace referencia a la propiedad nombre del segundo objeto interior.

Mis dudas son:


1 - ¿La cadena de ámbito (Scope chain mejor) del handler contiene al objetoPropiedad2?.

2 - ¿Y contiene a MiObjeto?.

Gracias por leer. Espero haya sido claro.
  #5 (permalink)  
Antiguo 12/04/2012, 15:19
Avatar de sneyder05  
Fecha de Ingreso: enero-2009
Ubicación: Cali
Mensajes: 172
Antigüedad: 15 años, 3 meses
Puntos: 17
Pregunta Respuesta: Sobre scope chain en handlers

Saludos Trafficx

Dinos que intentas hacer con ese tipo de objetos y encapsulación, y te podremos orientar de la mejor manera
__________________
{
job: 'freelance',
contact: '[email protected]'
}
  #6 (permalink)  
Antiguo 12/04/2012, 15:31
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Sobre scope chain en handlers

El scope dependerá del contexto en el que estés declarando 'MiObjeto', pero independientemente de eso, el objeto en cuestión y todas sus properties serán visibles para el handler (ya que tiene visibilidad al momento de ser declarado).

Si te interesa leer sobre este tópico, te recomiendo la siguiente lectura:

1. http://dmitrysoshnikov.com/ecmascrip...4-scope-chain/
2. http://dmitrysoshnikov.com/ecmascrip...common-theory/
__________________
blog | @aijoona

Etiquetas: chain, eventos, handler, objetos, scope
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 00:54.