Sumario
Cada función en JavaScript es actualmente un objeto Function
.
Creado por
Como todos los demás objetos, Function
se puede crear utilizando la instrucción new
:
new Function ([arg1[, arg2[, ... argN]],] cuerpo-de-la-función)
-
arg1, arg2, ... argN
-
Nombres para ser utilizados por la función como nombres formales de argumento. Cada uno de ellos debe ser una cadena que corresponde a un identificador válido JavaScript o una lista de esas cadenas separadas por una coma; por ejemplo "
x
", "elValor
", o "a,b
". -
cuerpo-de-la-función
- Una cadena que contiene las instrucciones del código JavaScript y que conforma el cuerpo de la función.
Invocar el constructor de la Function
como una función (sin usar el operador new
) tiene el mismo efecto que invocarla como un constructor.
Descripción
General
Los objectos Function
creados con el constructor de la Function
son evaluados cada vez que son usados. Esto no es tan eficiente como declarar una función y llamarla después dentro de tu código, porque las funciones declaradas se pasan una sola vez.
Especificar argumentos con el constructor de Function
El código siguiente crea un objeto Function
que toma dos argumentos.
var multiplicar = new Function("x", "y", "return x * y");
Los argumentos "x
" e "y
" son nombres formales de argumentos que se usan en el cuerpo de la función, "return x * y
".
El código precedente asigna una función a la variable multiplicar
. Para llamar al objeto Function
, puedes especificar el nombre de la variable como si fuera una función, como se muestra en el siguiente ejemplo.
var laRespuesta = multiplicar(7, 6); var miEdad = 50; if (miEdad >= 39) { miEdad = multiplicar(miEdad, .5); }
Function
prototype object
Propriedades
-
Function.arguments
-
Una matriz correspondiente a los argumentos pasados a una función. Como propiedad de una
Function
, este uso está obsoleto. Se recomenda el uso del objetoarguments
. -
Function.arity
-
Especifica el número de argumentos que espera la función. Se recomienda, no obstante, utilizar la función
length
. -
Function.caller
- Especifica la función que invoca la ejecución de la función actual (no estándar).
-
Function.constructor
- Especifica la función que crea un prototipo de objeto.
-
Function.length
- Specifica el número de argumentos esperados por la función.
-
Function.name
- El nombre de la función (no forma parte del estándar).
-
Function.prototype
-
Permite añadir propiedades a los objetos función (ambos, los construidos usando
Function
y los declarados usando una declaración de función o una expresión de función).
Métodos
-
Function.prototype.apply()
- Le permite aplicar el método de otro objeto en el contexto de un objeto diferente (el objeto llamado).
-
Function.prototype.call()
- Le Permite llamar (ejecutar) a un método de otro objeto en el contexto de un objeto diferente (el objeto que llama).
-
Function.prototype.toSource()
-
Devuelve una cadena que representa el código fuente de la función. Anula al método
Object.toSource
. -
Function.prototype.toString()
-
Devuelve una cadena que representa el código fuente de la función. Anula al método
Object.toSource
.
Ejemplos
Ejemplo: Crear manejador de evento "focus" y "blur" para un marco (frame)
El siguiente ejemplo crea el manejador de eventos onFocus
y onBlur
para un marco. Este código existe en el mismo fichero que contiene la etiqueta frameset
. Observe que este script es la únima forma de crear el manejador para los eventos "focus" y "blur" para un marco, porque no se pueden especificar manejadores de eventos dentro de la etiqueta frame
.
var marco = frames[0]; marco.onfocus = new Function("document.body.style.backgroundColor = 'white';"); marco.onblur = new Function("document.body.style.backgroundColor = '#bbbbbb';");