Comunidad de diseño web y desarrollo en internet online

JSON.parse() - eval() : Código dinámico Javascript

Citar            
MensajeEscrito el 26 Sep 2013 11:32 pm
Quiero mediante programación js, crear código js.
He intentado usando la función eval(); pero encuentro que no es recomendado su uso por lo que estoy revisando la función alternativa JSON.parse(), pero desconozco uso.

Necesito crear diferentes códigos llava script de forma dinámica con una sintaxis diferente a eval()

Por ejemplo, para el caso:

Código Javascript :

var a = 1
eval( 'alert(' + a +');' );


Que opciónes tengo?

Agradezco cualquier sugerencia.
Gr.

Por charladito

26 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Sep 2013 06:55 am
Yo lo que creo que tu quieres hacer lo solucione con variables dinamicas i funciones dinamicas

Para hacer variables que sean dinamicas en javascript se utiliza...., te pongo un ejemplo-->:

Código Javascript :

for(var s=0;s<9;s++){
this['akt'+s]=s*1;
}
//y para funciones dinamicas se utiliza lo siguiente
function llamar(unaFuncion) { unaFuncion("dablin");}
function saludar(nombre) { alert("Hola, " + nombre + "!"); }
llamar(window['saludar']('laostiafunciona'));


Como puedes ver tu puedes llegar a crear variables i tambien funciones dinamicamente, solo decirte que mires a toda costa de evitar utilizar eval para crear tus funciones y codigos, es no recomendable y peligroso jejejeje. Si eres capaz de entender la gramatica para crear funciones dinamicas y variables dinamicas, eval deja de tener sentido

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Sep 2013 07:12 am
Bueno para que no te detecte ningun error la consola web mejor hacerlo de esta manera:

Código Javascript :

function cristalab(unaFuncion,var2) {
        window[unaFuncion](var2);
    }
    function Holalabero(nombre) {
        alert("Hola, " + nombre + "!");
    }
     
    cristalab('Holalabero','ahivalaostia funciona');

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Sep 2013 07:17 am
La idea es que consigas tener unas funciones no dinamicas que creen otras funciones que si sean dinamicas con variables que sean dinamicas y originen resultados dinamicos en funcion de tiempo, usuario, navegador utilizado ... y lo complicas lo que tu quieras

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Sep 2013 12:32 pm
No se que es lo que queres hacer, pero eso de funciones dinámicas me parece una chorrada...
En todo caso usaría funciones ya declaradas y lo que cambiaria son los parámetros que le pasas a esa función.

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 27 Sep 2013 01:37 pm

SinSemilla escribió:

No se que es lo que queres hacer, pero eso de funciones dinámicas me parece una chorrada...
En todo caso usaría funciones ya declaradas y lo que cambiaria son los parámetros que le pasas a esa función.

Saludos!



Hola.
Por ejemplo para el siguiente caso cómo debería hacerlo:

La siguiente función toma un campo de un formulario y le asigna Null

crmForm.all.new_campo1.DataValue = null;

en donde new_campo1 es el nombre campo en el formulario que quiero cambiar el valor, lo demás es programación propia del sdk.

La idea es que el nombre del campo se cambie de acuerdo a ciertas validaciones, por lo que he usado la función eval() así:

Código Javascript :

var FieldName = "new_campo1";  //Esta variable se le asigna el nombre del campo

var SetFieldFormNULL = "crmForm.all."+FieldName+".DataValue = null;";

eval(SetFieldFormNULL);


Agradezco sugerencias.

Por charladito

26 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Sep 2013 02:15 pm
facilito

Código Javascript :

var contador = 1; //esta variable va de 1 a n osease campos ilimitados
var FieldName = "new_campo";  //Esta variable se le asigna el nombre del campo
var SetFieldFormNULL = "crmForm.all."+FieldName+contador+".DataValue = null;";

eval(SetFieldFormNULL);

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 27 Sep 2013 03:47 pm

elporfirio escribió:

facilito

Código Javascript :

var contador = 1; //esta variable va de 1 a n osease campos ilimitados
var FieldName = "new_campo";  //Esta variable se le asigna el nombre del campo
var SetFieldFormNULL = "crmForm.all."+FieldName+contador+".DataValue = null;";

eval(SetFieldFormNULL);



Gracias Porfirio.
Sabes si puedo usar otra forma adicional a eval() ?; tengo entendido que esta no es la mas óptima.
Gr.

Por charladito

26 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Sep 2013 06:02 pm
programo con el modelo Orientado a Objetos.

No se me ha presentado hasta ahora una situación como la que mencionas o por lo menos no he necesitado resolverla evaluando un código.

En todo caso todo en HTML se puede generar contenido sin necesidad de agregar un eval, creo que aquí tendrías que abrir un tema, con el problema "especifico" que quieres resolver.

No escribas un parrafo extenso solo pon una lista de lo que debe y NO debe hacer, asi se te podrá ayudar mejor.

Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 28 Sep 2013 04:08 am
Hombre Sinsemilla mas que una chorrada lo de la funciones dinamicas es una manera de ahorrar cantidades ingente de codigo , fijate que en el codigo fuente de la pagina de google no utilizan ni eval ni variables dinamicas utilizan las funciones dinamicas. JAJAJA Llama a google i diles que es una chorrada, puede que te contraten.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Sep 2013 12:50 pm

aukun escribió:

Hombre Sinsemilla mas que una chorrada lo de la funciones dinamicas es una manera de ahorrar cantidades ingente de codigo , fijate que en el codigo fuente de la pagina de google no utilizan ni eval ni variables dinamicas utilizan las funciones dinamicas. JAJAJA Llama a google i diles que es una chorrada, puede que te contraten.

:nif:


1- No se a que te referis con "es una manera de ahorrar cantidades ingente de codigo", pero si sabes lo que estas haciendo, sabes que funciones tenes que tener en cada momento y que parámetros van a recibir... me parece que consume muchisimos menos recursos tener la función ya cargada y recibir solo el parámetro que recibir toda una función a ejecutar...

2- "fijate que en el codigo fuente de la pagina de google no utilizan ni eval ni variables dinamicas utilizan las funciones dinamicas"...
No se que decirte... Si lo tenes a google como el master de todo no voy a poder cambiarte de opinión, pero mira este link... Google no pasa la validación de W3C... Asi que lo que hacen... es una chorrada...

Además, a mi parecer, la tecnología varía según el problema a resolver y el problema no debe adaptarse a la tecnología elegida por el programador... Y en este problema en particular no sabemos lo que quiere hacer el que realizo la pregunta.

3- Da la impresión de que la tenes re clara y seguro vos si estas trabajando en google, te paso mi CV a ver si me podes hacer entrar... :wink:

Aunque pensandolo bien no... gracias... no pagan lo suficiente.
:lol: :lol:

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 30 Sep 2013 08:11 pm
No te lo tomes a mal sinsemilla, simplemente tu crees que es una chorrada, y yo le encuentro utilidad a eso, mientras tu no le ves ninguna utilidad yo si porque lo he utilizado mucho. No sucede nada , todos tenemos nuestras maneras de hacer deshacer el codigo como mas nos convenga, por otra parte no encuentro que porque alguien considere mejor hacer las cosas de una manera i realmente le es util mientras que otros que no saben encontrarle ninguna utilidad tenga que ser una chorrada, simplemente hacia mencion a google porque si que utilizan funciones dinamicas, y lo decia ironicamente lo de buscar trabajo en google precisamente porque tu decias que era una chorrada. Yo simplemente he querido ayudar, porque he visto el codigo de google i me gusta como esta hecho, que a ti no te gusta porque sigues a rajatabla w3c bueno cada uno defiende lo suyo pero no me gusta menospreciar el trabajo de los otros ni el tuyo(sinsemilla) ni el de google ni el de nadie como tu lo has hecho, al contrario!!! encuentro muy valido lo que dices de como se deveria hacer o solucionar por que continuamente aprendemos de todo lo que todo el mundo dice y lo que no encuentro bien que menosprecies el trabajo de otros. Todos estamos en continuo aprendizaje los expertos (dando soluciones a preguntas que nunca se han hecho) e inexpertos(haciendose preguntas). Pero incluso el mas experto de todos, es experto porque se hace preguntas y siempre esta en continuo aprendizage i considera que no lo sabe todo o almenos no considera una chorrada lo que otros les es util.

Solo pedir disculpas por mi parte al que inicio este tema y propuso la pregunta, disculpas por esta discusion que no le aporta absolutamente ninguna solucion.

Respecto al tema, yo considero "otros consideraran de otra manera" (y respeto todas las otras maneras de hacer) que la funcion eval se utiliza para que un string sea evaluado, el hecho que sea un string hace que lo podamos variarlo como queramos y hacer que ese codigo evaluado sea en cierta manera dinamico (eso segun mi opinion nos economiza lineas de codigo). La mayoria, no todos, pero yo me encuentro en esa mayoria desaconsejamos el uso de eval, la solucion --> pues poniendo mas codigo, hacer que sea dinamico hace economizar lineas de codigo, unos lo haran con variables dinamicas otros con funciones dinamicas otros de otra manera y otros que conocen bien los riesgos que comporta utilizar eval prefiriran incluso eval. Simplemente decirte que crees tu propia manera de crear codigo, i luego comprimelo, economiza lineas como mejor te funcione. Aprende la gramatica javascript que mas te sea util.
Por lo que a mi respecta, he intentado ayudar, no menospreciar.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Sep 2013 08:46 pm
aukun no te ofendas, no estoy menospreciando tu trabajo, ni siquiera se que haces... y tampoco viene al caso.

Con lo que me refería con que es una chorrada, es que el problema original no esta completamente planteado y puede haber una solución mucho mas sencilla.

El hilo del tema se fue al carajo... Pero lo que veo que no concuerdan son tus respuestas...
En la ultima fuiste tan cortes, amable y cuidadoso...
Y en la anterior "JAJAJA Llama a google i diles que es una chorrada, puede que te contraten. "...

Si te ofendió mi respuesta a eso...

A lavarse la corneta!!

jajajaja

Mentira, todo bien.

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 30 Sep 2013 11:55 pm
Cree lo que quieras sinsemilla y lo que te haga mas feliz, pero no menosprecies el trabajo de los demas porque crees saber mas oye que seguramente sabes mucho mas que cualquiera de nosotros y seguramente estas mucho mas acertado, pero no menosprecies.

Como ya dije lo de la funcion eval y las soluciones que dan en stackoverflow os dejo el link sobre las funciones de nombre dinamicas click aqui

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Oct 2013 12:43 am
Eval versus dynamic name function ciertamente no es la mejor solucion en cuanto al rendimiento pero es una posible solucion para segun que situaciones y evitar utilizar eval aqui os dejo unos links de:
marcos caceres

Derek Gathright

En la coleccion O'reilly en el libro javascript cookbook de Shelley Powers te dice opciones para contrarestar eval y la gramatica de las funciones dinamicas.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Oct 2013 12:16 pm
Pero vos sos un loco...
No te estoy menospreciando ni me hago el que se mas que vos...
Por 984597834897534 vez te repito, no esta planteado del todo el problema y creo que se puede solucionar de otra forma...

Pero es como dice el dicho...

EL QUE SOLO CONOCE UN MARTILLO, TODOS SUS PROBLEMAS LE PARECEN UN CLAVO.....

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 01 Oct 2013 03:53 pm
Menosprecias apartir del momento que dices que es una chorrada utilizar funciones dinamicas para solucionar eval cuando mucha gente las utiliza, gente que sabe mas que tu y que yo, en vez de decir bueno prefiero utilizar otra manera de hacer eso porque yo lo soluciono de otra manera, vas y comienzas a buscar los errores de codigo de google i pasar a de decir que mejor no trabajar en google y regodearse de lo poco que pagan en google, pero da igual, cree lo que quieras, estaba siendo ironico por que me ha sabido a prepotente tu contesta, otra cosa es que haya dado en el clavo en lo que que a ti se refiere y hayas tenido la necesidad de comenzar a buscar para criticar. Cree lo que quieras, si quieres te doy toda la razon, yo solo he estado buscando codigo para ayudar al que hizo la pregunta, tu has estado buscando para criticar las respuestas, tu sabras ahi esta escrito.

Por aukun

Claber

200 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.