Function
BaselineWidely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
Cada función de JavaScript en realidad es un objetoFunction
. Esto se puede ver con el código(function() {}).constructor === Function
, que devuelvetrue
.
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) paraeval
. Sin embargo, a diferencia deeval
, el constructorFunction
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 objetoarguments (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 elthisArg
proporcionado. Los argumentos se pueden pasar como un objetoArray
.Function.prototype.bind(thisArg[,arg1[,arg2[, ...argN]]])
Crea una nueva función que, cuando se llama, tiene su
this
configurado en elthisArg
. 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 constructorFunction
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 constructorFunction
. Esto es diferente de usareval
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()); // 10var f2 = createFunction2();console.log(f2()); // 20
Si bien este código funciona en los navegadores web,f1()
producirá unReferenceError
en Node.js, ya que no encontrará ax
. Esto se debe a que el ámbito de nivel superior en Node no es el ámbito global, yx
será local para el módulo.
Especificaciones
Specification |
---|
ECMAScript® 2026 Language Specification # sec-function-objects |
Compatibilidad con navegadores
Ve también
- Funciones y ámbito de la función
- Declaración
function
- Expresión
function
- Declaración
function*
- Expresión
function*
- Función asíncrona
- Función generadora