
El constructor Function en javascript crea un nuevo objeto Function y al llamar al constructor directamente nos permite crear funciones dinámicamente, pero tiene problemas de hardware y seguridad similares a eval
. Tenga en cuenta que todas las funciones en JavaScript son objetos Function
.
Características generales
Los objetos Function
creados a través del Function
constructor se interpretarán cuando se cree la función. Son menos eficientes que las declaraciones de funciones o las expresiones de definición de funciones.
Todos los argumentos pasados a la función serán tratados como los nombres de los identificadores de parámetros creados en la función y en el orden en que se pasaron. Llamar al constructor Function
como una función normal (es decir, sin usar un operando new
) tiene el mismo efecto que llamarlo como un constructor.
Estructura Function javascript
new Function ([arg1[, arg2[, ...argN]],] functionBody)
arg1, arg2, … argN
Los nombres usados por la función para referirse a los argumentos pasados a la función, deben ser cadenas que representen identificadores JavaScript válidos o una lista de esas cadenas separadas por una coma. Por ejemplo: "x"
o "theValue"
o "a,b"
.
functionBody
Una cadena que contiene las expresiones de JavaScript que forman el cuerpo de la función.
Propiedades y funciones de la función constructora Function
Un objeto global Function javascript no tiene propiedades o métodos propios, pero dado que es una función, heredará algunos de los métodos y propiedades a través de la cadena de prototipos de Function.prototype
.
Function.arguments
Una matriz que contiene los argumentos pasados a la función, esta propiedad está en desuso y es preferible usar el objeto provisto arguments
dentro de las funciones en su lugar.
Function.arity
Especifica el número de argumentos que espera la función. Esta función se omite y no es compatible con todos los navegadores, por lo que se debe utilizar la propiedad length
.
Function.caller
Especifica el nombre de la función que llamó a la función que se está ejecutando actualmente.
Function.length
Especifica el número de argumentos que espera la función.
Function.name
Devuelve el nombre de la función.
Function.displayName
Devuelve el nombre para mostrar de la función. Esta función no es estándar y no es compatible con todos los navegadores.
Function.prototype.constructor
Especifica la función que creará el objeto prototipo de la función. Consulte las funciones Object.prototype.constructor
para obtener más detalles.
Funciones
Function.prototype.apply()
Llame a una función y establezca su valor de parámetro this
en el valor dado, y los argumentos se le pasan como una matriz Array
.
Function.prototype.bind()
Cree una nueva función cuyo valor de parámetro this
cuando se llame se establecerá en el valor especificado, además de la cadena de argumento especificada.
Function.prototype.call()
Llame a una función y establezca su valor de parámetro this
en el valor dado, y los argumentos se le pasarán tal cual.
Function.prototype.isGenerator()
Devuelve el valor true
si la función es un generador; de lo contrario, se devolverá el valor false
. Esta función no está estandarizada y no es compatible con todos los navegadores.
Function.prototype.toSource()
Devuelve una cadena que contiene el código fuente que representa esta función. Esta función se omite y no es compatible con la mayoría de los navegadores.
Function.prototype.toString()
Devuelve una cadena que representa la función, que es una redefinición de la función Object.prototype.toString
.
Copias realizadas a partir de Function
Las versiones construidas de un constructor Function
heredan funciones y propiedades de un objeto Function.prototype
. Al igual que con todos los constructores, puede realizar cambios en un objeto prototype
en el constructor para que esos cambios se reflejen en todas las instancias del objeto Function
.
Ejemplos y aplicaciones en código
Definición de coeficientes con función constructora Function
. El siguiente código crea una función usando el constructor que Function
acepta dos argumentos:
var adder = new Function('a', 'b', 'return a + b'); adder(2, 6); // 8
El valor de los argumentos a
y b
del cuerpo de la función se utilizará en la expresión return a + b
. La diferencia entre funciones construidas a través del constructor y expresiones para declarar funciones.
Las funciones creadas a través del Function
constructor no crean cierres en el contexto de su creación, siempre se crean en el ámbito global, por lo que cuando las ejecute podrá acceder a los valores de sus variables locales y globales, no a las de el contexto de la llamada de función creada a partir de la función alfabética Function
. Esto es diferente de usar una función eval
con código que contiene una expresión para definir una función.
var x = 10; function createFunction1() { var x = 20; return new Function('return x;'); // variable global } function createFunction2() { var x = 20; function f() { return x; // variable local } return f ; } var f1 = createFunction1(); console.log(f1()); // 10 var f2 = createFunction2(); console.log(f2()); // 20
Soporte de navegadores
Característica | Chrome | Firefox | IE | Opera | Safari |
---|---|---|---|---|---|
Soporte básico | sí | sí | sí | sí | sí |
Consulte la página de cada una de las funciones del objeto para Function
obtener detalles sobre su compatibilidad con el navegador.
- Expresión const en JavaScript
- Expresión let en JavaScript
- Expresión var en JavaScript
- Expresión try…catch en JavaScript
- Expresión throw en JavaScript
- Continue en JavaScript
- Switch en JavaScript
- Expresiones if…else en JavaScript
- Declaración vacía o empty en JavaScript
- Break en JavaScript
- Sentencia block en JavaScript
- Arguments en JavaScript
- Promise en JavaScript
- Number en JavaScript
- Características JSON en JavaScript
- Array en JavaScript
- RegExp en JavaScript
- String en JavaScript
- Date en JavaScript
- Math en JavaScript
- URIError en JavaScript
- TypeError en JavaScript
- SyntaxError en JavaScript
- ReferenceError en JavaScript
- RangeError en JavaScript
- EvalError en JavaScript
- Características Boolean en JavaScript
- Error en JavaScript
- Función Symbol en JavaScript
- Constructor Function en JavaScript
- Constructor Object en JavaScript
- Función unescape() en JavaScript
- Función eval() en JavaScript
- Valor null en JavaScript
- Características Undefined en JavaScript
- Características NaN en JavaScript
- Características Infinity en JavaScript
- Función parseFloat() en JavaScript
- Función isNaN() en JavaScript
- Función isFinite() en JavaScript
- Función escape() en JavaScript
- Función encodeURIComponent() en JavaScript