Constructor Function en JavaScript

Función Function‎‎‎‎ en JavaScript
Función Function‎‎‎‎ en JavaScript

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""theValue""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 ab 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 evalcon 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ísticaChromeFirefoxIEOperaSafari
Soporte básico

Consulte la página de cada una de las funciones del objeto para Function obtener detalles sobre su compatibilidad con el navegador.