Foros del Web » Programando para Internet » Javascript »

Funcion siempre vota: is not constructor

Estas en el tema de Funcion siempre vota: is not constructor en el foro de Javascript en Foros del Web. Hola, esta vez me toco a mi... tengo el siguiente codigo::: Código HTML: function evalua_mi_json(json){ mi_json=new Function('return '+json)(); alert(mi_json); } Resulta que cada vez que ...
  #1 (permalink)  
Antiguo 25/02/2008, 16:09
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Funcion siempre vota: is not constructor

Hola, esta vez me toco a mi... tengo el siguiente codigo:::
Código HTML:
   function evalua_mi_json(json){
	mi_json=new Function('return '+json)();
	alert(mi_json);
   }
Resulta que cada vez que invoco a esta mi funcion [evalua_mi_json] asi..
Código HTML:
   miJSON=new evalua_mi_json('{nombre:"angel",apellido:gutierrez,edad:23}');
En la primera nomal me devuelve el objeto, pero en una segunda ocasion que la invoco me sale el siguiente error...
Código PHP:
   evalua_mi_json is not constructor 
Alguna idea para invocarlo, si que se limite a una vez...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #2 (permalink)  
Antiguo 25/02/2008, 16:24
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: Funcion siempre vota: is not constructor

Sí, quitándole el operador new en la invocación (no tiene sentido usarlo). Ejemplo:
Código PHP:
<script>
function 
evalua_mi_json(json){
    
mi_json=new Function('return '+json)();
    
alert(mi_json['nombre']);
}
miJSON=evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
miJSON=evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
miJSON=evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
miJSON=evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
</script> 
(gutierrez es string y debe ir entre comillas)
  #3 (permalink)  
Antiguo 25/02/2008, 18:50
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Funcion siempre vota: is not constructor

Hola gracias por responder, voy a probarlo... ahora mas bien una consulta, no se supone que al colocarle el operador new, se crear una nueva version del Function... con lo cual no tendria sentido el error, al menos eso entiendo yo...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #4 (permalink)  
Antiguo 25/02/2008, 19:15
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: Funcion siempre vota: is not constructor

Sí, el error no tiene sentido. Es más, a mi no se me produce ni en Firefox, ni en Ópera, ni en Explorer 7 ni 6, probado de esta manera:
Código PHP:
<script>
function 
evalua_mi_json(json){
    
mi_json=new Function('return '+json)();
    
alert(mi_json['nombre']);
}
miJSON=evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
miJSON=evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
miJSON=evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
miJSON= new evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
alert(miJSON.constructor)
miJSON= new evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
miJSON= new evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
</script> 
Pero digo que no tiene sentido en este contexto el operador new, ya que los objetos Function son evaluados cada vez que son ejecutados, a diferencia de las funciones declaradas, que son compiladas: http://developer.mozilla.org/es/docs...bjeto_Function
  #5 (permalink)  
Antiguo 25/02/2008, 23:18
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Funcion siempre vota: is not constructor

Parece que encontre el problemita...
Código HTML:
   function evalua_mi_json(json){
      mi_json=new Function('return '+json)();
      alert(mi_json['nombre']);
   }
El problema estaba aqui...
Código HTML:
    evalua_mi_json=new evalua_mi_json('{nombre:"angel",apellido:"gutierrez",edad:23}');
Yo lo estaba invocando con el mismo nombre de la funcion, y al parecer se pierde la referencia del mismo por lo cual sale el tremendo HORROR... le cambie el nombre como mostraste y todo ok...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
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 21:18.