Function() | Function.prototype | fn.length | fn.apply() | fn.bind() | fn.call() | Objeto arguments
Function()
Función constructora de los objetos de tipo Function
Sintaxisvar funcion = new Function([argumento1, [... argumentoN,]] cuerpo)
var funcion = new Function([argumento1, [... argumentoN,]] cuerpo)
argumento1...argumentoN
Opcional. Nombres de los argumentos que recibirá la función.
cuerpo
Opcional. Cadena con el cuerpo de la función. Si no se incluye se creará una función vacia.
var funcion = Function([argumento1, [... argumentoN,]] cuerpo)
La función constructora Function()
puede ser invocada como una función devolviendo un objeto tipo Function
de forma similar a los creados con new Function()
.
var funcion = function() {}
function funcion() {}
Las funciones también se pueden crear utilizando la instrucción y el operador function
. Este tipo básico de Javascript se convertirá en un objeto Function
siempre que sea necesario.
Ejemplo// Función creada como objeto
var sumar = new Function('a', 'b', '{ return a + b;}');
console.log(sumar(1,3));
// Función creada como objeto
var sumar = new Function('a', 'b', '{ return a + b;}');
console.log(sumar(1,3));
Las instancias de los objetos del tipo Function
disponen de las propiedades y métodos definidos en Function.prototype
. Todas las funciones de Javascript disponen de los métodos y propiedadades del objeto Function, por lo que las funciones constructoras de los objetos nativos de Javascript disponen también de estos miembros.
Function.prototype
Prototipo con el que se crean los objetos de tipo Function
SintaxisFunction.prototype
Function.prototype
El prototipo incluye todas las propiedades y métodos que heredarán los objetos del tipo Function
.
Si al objeto prototype
se le añade o modifican propiedades o métodos, todos los objetos creados a partir del tipo Function
tendrán estos nuevos miembros, incluso los creados con anterioridad a la modificación del prototipo.
fn.length
Contiene el número de argumentos definidos para una función.
El motor de scripting inicializa la propiedad length de una función con el número de argumentos establecido en su definición cuando se crea una instancia de la misma.
El resultado de llamar a una función con un número de argumentos distinto del valor de su propiedad length depende de la función.
Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()
) son:
{"value": 0, "writable": false, "enumerable": false, "configurable": false}
fn.apply()
Llama a una función y sustituye el objeto this
actual por otro, pasando los argumentos que se indiquen en una matriz.
Sintaxisfn.apply([thisObj[, matrizArgumentos])
fn.apply([thisObj[, matrizArgumentos])
fn
Función a la que se quiere llamar.
thisObj
Opcional. Objeto que será referenciado como
this
dentro de la función llamada.
matrizArgumentos
Opcional. Matriz que contiene los argumentos que queremos pasar a la función.
Ejemplofunction Producto(nombre, precio) {
this.nombre = nombre || 'sin nombre';
this.precio = precio || 0;
return this;
}
function Cereales(nombre, precio) {
Producto.apply(this, [nombre, precio]);
this.categoria = 'cereales';
}
var MisCereales = new Cereales('los mejores', 12);
function Producto(nombre, precio) {
this.nombre = nombre || 'sin nombre';
this.precio = precio || 0;
return this;
}
function Cereales(nombre, precio) {
Producto.apply(this, [nombre, precio]);
this.categoria = 'cereales';
}
var MisCereales = new Cereales('los mejores', 12);
Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()
) son:
{"writable": true, "enumerable": false, "configurable": true}
fn.bind()
Para una función crea otra función enlazada con el mismo cuerpo que la función original.
Sintaxisvar fnEnlazada = fn.bind(thisObj[, argumento1[, argumento2[,...argumentoN]]])
var fnEnlazada = fn.bind(thisObj[, argumento1[, argumento2[,...argumentoN]]])
fnEnlazada
Función que se obtiene de bind y que estan enlazada con la función inicial.
fn
Función a la que quiere crear otra función enlazada.
thisObj
Objeto que será referenciado como
this
dentro de la función enlazada.
argumento1...argumentoN
Opcional. Argumentos pasados a la función.
Como resultado de llamar a este método obtenemos una función enlazada igual que la original, que tiene el objeto this
que se haya indicado como argumento y tiene los parámetros especificados.
Ejemplofunction potencia(exponente, base) {
var result = base;
for (var cont = 2; cont <= exponente; cont++) {
result = result * base;
}
return result;
}
var cuadrado = potencia.bind(undefined, 2);
var cubo = potencia.bind(undefined, 3);
console.log(cuadrado(3)); // 9
console.log(cubo(3)); // 27
function potencia(exponente, base) {
var result = base;
for (var cont = 2; cont <= exponente; cont++) {
result = result * base;
}
return result;
}
var cuadrado = potencia.bind(undefined, 2);
var cubo = potencia.bind(undefined, 3);
console.log(cuadrado(3)); // 9
console.log(cubo(3)); // 27
Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()
) son:
{"writable": true, "enumerable": false, "configurable": true}
fn.call()
Llama a una función y sustituye el objeto this
actual por otro, pasando los argumentos que se indiquen.
Sintaxisfn.call(thisObj[, argumento1[, argumento2[,...argumentoN]]])
fn.call(thisObj[, argumento1[, argumento2[,...argumentoN]]])
fn
Función a la que se quiere llamar.
thisObj
Objeto que será referenciado como
this
dentro de la función llamada.
argumento1...argumentoN
Opcional. Argumentos pasados a la función.
Ejemplofunction Producto(nombre, precio) {
this.nombre = nombre || 'sin nombre';
this.precio = precio || 0;
return this;
}
function Cereales(nombre, precio) {
Producto.call(this, nombre, precio);
this.categoria = 'cereales';
}
var MisCereales = new Cereales('los mejores', 12);
function Producto(nombre, precio) {
this.nombre = nombre || 'sin nombre';
this.precio = precio || 0;
return this;
}
function Cereales(nombre, precio) {
Producto.call(this, nombre, precio);
this.categoria = 'cereales';
}
var MisCereales = new Cereales('los mejores', 12);
Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()
) son:
{"writable": true, "enumerable": false, "configurable": true}
Objeto arguments
Contiene los argumentos del objeto Function
que se está ejecutando.
El objeto arguments
se crea cada vez que se ejecuta una función y contiene los argumentos que se han pasado a la misma.
Esta objeto permite a una función gestionar un número variable de argumentos.
Este objeto no se puede crear de foma explícita y es creado por Javascript de forma implícita al ejecutar cada función.
1…[n]arguments[0]
arguments[0]
Se puede tener acceso a cada uno de los argumentos contenidos en el objeto arguments
de la misma forma que a los elementos de una matriz.
arguments.lengtharguments.length
arguments.length
La propiedad length
del objeto arguments
contiene el número de argumentos que se pasan a la función.
calleearguments.callee
arguments.callee
La propiedad callee
tiene una referencia a la función que se está ejecutando.
La propiedad callee
no es accesible en modo estricto ("use strict"
).
Nota: la propiedad caller
que hace referencia a la función llamante no es parte del estándar ECMA-262, aunque es implementado por muchos fabricantes. Este método tampoco es accesible en modo estricto ("use strict"
).