Function
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
* Some parts of this feature may have varying levels of support.
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) paraeval. Sin embargo, a diferencia deeval, el constructorFunctioncrea 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
thisen elthisArgproporcionado. 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
thisconfigurado 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
thisen 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
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-function-objects> |
Compatibilidad con navegadores
Loading…
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