04/02/2010, 08:24
|
| | | 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. |