Function

Cada funci贸n de JavaScript en realidad es un objeto Function. Esto se puede ver con el c贸digo (function() {}).constructor === Function, que devuelve true.

Constructor

Function()
Crea un nuevo objeto Function. Llamar al constructor directamente puede crear funciones din谩micamente, pero tiene problemas de seguridad y de rendimiento similares (pero mucho menos importantes) para eval. Sin embargo, a diferencia de eval, el constructor Function crea funciones que solo se ejecutan en el 谩mbito global.

Propiedades de la instancia

Function.arguments
Un arreglo que corresponde a los argumentos pasados a una funci贸n.
Esto est谩 obsoleto como propiedad de Function. En su lugar, utiliza el objeto arguments (disponible dentro de la funci贸n).
Function.caller
Especifica la funci贸n que invoc贸 a la funci贸n que se est谩 ejecutando actualmente.
Esta propiedad est谩 obsoleta, y solo es funcional para algunas funciones no estrictas.
Function.displayName
El nombre a mostrar de la funci贸n.
Function.length
Especifica el n煤mero de argumentos que espera la funci贸n.
Function.name
El nombre de la funci贸n.

M茅todos de instancia

Function.prototype.apply(thisArg [, argsArray])
Llama a una funci贸n y establece su this en el thisArg proporcionado. Los argumentos se pueden pasar como un objeto Array.
Function.prototype.bind(thisArg[, arg1[, arg2[, ...argN]]])
Crea una nueva funci贸n que, cuando se llama, tiene su this configurado en el thisArg. Opcionalmente, una determinada secuencia de argumentos se antepondr谩 a los argumentos siempre que se llame a la funci贸n reci茅n invocada.
Function.prototype.call(thisArg[, arg1, arg2, ...argN])
Llama a una funci贸n y establece su this en el valor proporcionado. Los argumentos se pueden pasar tal cual.
Function.prototype.toString()
Devuelve una cadena que representa el c贸digo fuente de la funci贸n.
Redefine el m茅todo Object.prototype.toString().

Ejemplos

Diferencia entre el constructor Function y la declaraci贸n function

Las funciones creadas con el constructor Function no crean cierres para sus contextos de creaci贸n; siempre se crean en el 谩mbito global. Al ejecutarlos, solo podr谩n acceder a sus propias variables locales y globales, no a las del 谩mbito en el que se cre贸 el constructor Function. Esto es diferente de usar eval con c贸digo para una expresi贸n de funci贸n.

var x = 10;

function createFunction1() {
    var x = 20;
    return new Function('return x;'); // esta |x| se refiere a la |x| global
}

function createFunction2() {
    var x = 20;
    function f() {
        return x; // esta |x| se refiere a la |x| local
    }
    return f;
}

var f1 = createFunction1();
console.log(f1());          // 10
var f2 = createFunction2();
console.log(f2());          // 20

Si bien este c贸digo funciona en los navegadores web, f1() producir谩 un ReferenceError en Node.js, ya que no encontrar谩 a x. Esto se debe a que el 谩mbito de nivel superior en Node no es el 谩mbito global, y x ser谩 local para el m贸dulo.

Especificaciones

Especificaci贸n
ECMAScript (ECMA-262)
La definici贸n de 'Function' en esta especificaci贸n.

Compatibilidad del navegador

BCD tables only load in the browser

Ve tambi茅n