Foros del Web » Programando para Internet » Javascript »

Scope de funciones

Estas en el tema de Scope de funciones en el foro de Javascript en Foros del Web. Estoy intentando cambiar el scope o contexto de ejecucion de una funcion con call o apply. La idea es que el console.log(this); devuelva lo mismo ...
  #1 (permalink)  
Antiguo 24/09/2014, 13:05
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Scope de funciones

Estoy intentando cambiar el scope o contexto de ejecucion de una funcion con call o apply.

La idea es que el console.log(this); devuelva lo mismo que console.log(x); en vez de un objeto window. Alguien tiene idea de como debería encarar el problema?

Saludos

Código Javascript:
Ver original
  1. function queryMin(){
  2.  
  3.   this.v = [1,2,3,4];
  4.  
  5.   this.each = function( fn){
  6.  
  7.     for( x in this.v){
  8.    
  9.     fn(this.v[x]);
  10.     //fn.call(this.v, this.v[x]);
  11.     }
  12.   };
  13.  
  14. }
  15.  
  16. test = new queryMin();
  17.  
  18. test.each( function(x){
  19.     console.log(this);
  20.     console.log(x);
  21. });
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #2 (permalink)  
Antiguo 27/09/2014, 05:01
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Scope de funciones

Funciona bien... pero la parte crucial la tienes marcada como comentario...

Si quieres que this tenga el valor actual del array siendo iterado:

Código Javascript:
Ver original
  1. fn.call(this.v[x]);


Etiquetas: funcion, funciones, 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 11:35.