Ver Mensaje Individual
  #7 (permalink)  
Antiguo 04/05/2010, 21:33
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 9 meses
Puntos: 1485
Respuesta: invalid label en objeto json

primero aclarar que no me refiero a que eval y Function producen el mismo resultado. evidentemente el uno no puede suplantar al otro porque ambos tiene propositos diferentes. a lo que venia el tema es que ambas funciones dependen del mismo concepto para operar: evaluar un string e interpretarlo como codigo javascript. por tanto, si eval es inseguro, Function tambien lo es al igual que cualquier otra funcion que dependa del mismo concepto (setTimeout, setInterval).

http://devlicio.us/blogs/sergio_pere...evil-eval.aspx
no se habla al detalle pero si se menciona superficialmente que eval y Function procesan de la misma forma el string. seccion Thank God I didn't know functions had constructors.

http://www.berniecode.com/blog/2007/...in-javascript/
el comentario de Douglas Crockford (desarrollador de Javascript en Yahoo) claramente comenta que Function e eval son relativos.

http://dev.opera.com/articles/view/e...script/?page=2
en este articulo se reclama que Function es menos malvado que eval porque segun no afecta el entorno que le rodea.
Cita:
The Function constructor is not quite as bad as eval, since using it does not affect the code surrounding the use, but it can still be quite slow.
hasta cierto punto es cierto. es decir, en el momento que se invoca el constructor Function, el codigo analizado no afecta su ambiente, pero si puede afectar cuando la funcion creada es invocada. por ejemplo,
Código:
var variable = "hello world";
var myFunc = new Function("variable = null;");
alert(variable); // muestra hello world;
myFunc();
alert(variable); // muestra null;
en el libro de Douglas Crockford, Javascript: The Good Parts, tiene una seccion llamada Bad Parts, y esto es un fragmento de lo que comenta acerca de eval.
Cita:
Iniciado por Javascript: The Good Parts
[...]
The eval function also compromises the security of your application because it grants too much authority to the eval'd text. And it compromises the performance of the language as a whole in the same way that the with statement does.

The Function constructor is another form of eval, and should similary be avoided.

The browser provides setTimeout and setInterval functions that can take string arguments or function arguments. When given string arguments, setTimeout and setInterval act as eval. The string argument form also should be avoided.

[...]
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 04/05/2010 a las 21:39