Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/02/2010, 08:24
Avatar de Tecna
Tecna
 
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 11 meses
Puntos: 45
Respuesta: ¿Por qué no usar function() para generar objetos?

Buenas,

yo diría que hay 3 motivos importantes para no usar la constructora Function( )

- Por un lado los problemas de eficiencia, puesto que cada vez que se llama a la constructora se analiza el cuerpo de la función y se crea un nuevo objeto de función, cosa que casi nunca es necesaria y cuantas mas llamadas se hagan mas ineficiente será el codigo. Esto no ocurre con los literales de función con lo que el tiempo de ejecución es mejor.

- otro punto a tener en cuenta es que no capturan el ámbito local, es decir no definen un ambito léxico como el resto de las funciones y si existe una variable global con el mismo nombre será la que utilice pudiendo dar resultados erroneos si el valor de ambas variables es distinto y siendo dificil de detectar si no se presta atención a este detalle. Esto tampoco ocurre en los literales de función.

- y por último problemas de seguridad, porque como se analiza el código cada vez que se llama a la función permite incrustar código dinamicamente, que se compilará en tiempo de ejecución con el peligro que esto supone si no se filtra antes.