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.prototypeEl 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
thisdentro 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
thisdentro 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)); // 27Las 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
thisdentro 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.lengthLa propiedad length del objeto arguments contiene el número de argumentos que se pasan a la función.
calleearguments.callee
arguments.calleeLa 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").