Objeto Function

Funciones como objetos

Una función javascript es un objeto Function y por tanto se puede asignar a una variable, es decir, se puede instanciar como objetos.

Deriva del objeto global Object y por tanto hereda sus propiedades y métodos, a través de la propiedad prototype.

var sumar = function(suma1, suma2)

{

  return suma1 + suma2;

}

console.log( sumar(4,5) );

Ahora has usado function como un constructor y has instanciado un objeto con el nombre sumar. Esto va a ser útil, entre otras cosas, para asignar funciones a eventos.

Pero tiene más usos, puedes usarla como argumento en llamadas a otras funciones. Mira el ejemplo

var area = function(tipo, x, y)

{

return tipo(x,y)

}

function rectangulo(x,y){

   return x*y

}

function triangulo(x,y){

   return x*y/2

}

console.log("Rectangulo: " + area(rectangulo, 4,5) );

console.log( "Triangulo: " + area(triangulo, 4,5) );

Fíjate que la función area tiene como primer parámetro un objeto function que es ejecutado en el cuerpo.

En este ejemplo además los objetos rectángulo y triángulo se instancian usando la forma habitual de crear funciones.

Este mismo esquema serviría para programar una calculadora simple ¿te atreves?

Un objeto function también puede instanciarse mediante el operador new, aunque tiene menor rendimiento, pero permite crear funciones de forma dinámica.

En esta forma los argumentos y el cuerpo de la función se escriben como cadenas.

var area = new Function("a, b", "return a*b ")

console.log("Rectangulo: " + area(4,5) );

Notas

Una función Javascript es un constructor de objetos, que pueden contener propiedades, métodos y código ejecutable.

Si solo contiene código ejecutable tendríamos la habitual función de cualquier lenguaje de programación. Pero seguirá siendo un objeto.

Toda función tiene un propietario, es un método de algún objeto.

En el contexto del navegador las funciones, por defecto, pertenecn al objeto window.

scripts