1.4 Repaso JavaScript

Aunque supongo que ya sabes JavaScript voy a repasar de forma rápida alguna cosas que quizás te venga bien recordar.

Objetos

Crear un objeto en javaScript es tan sencillo como:

var persona={};

Si queremos añadirle propiedades con valores podemos hacerlo de varias formas:

  • Al crear el propio objeto:

var persona={
  nombre:"Juan",
  ape1:"Garcia",
  edad:34
}

  • Una vez creado el objeto:

var persona={};

persona.nombre="Juan";
persona.ape1="Garcia";
persona.edad=34;

  • Mediante un constructor

function Persona() {
  this.nombre="Juan";
  this.ape1="Garcia";
  this.edad=34;
}

var persona=new Persona();

También les podemos añadir funciones:

  • Al crear el propio objeto:

var persona={
  nombre:"Juan",
  ape1:"Garcia",
  edad:34,
  getNombreCompleto:function() {
    return this.nombre+this.ape1;
  }
}

  • Una vez creado el objeto:

var persona={};

persona.nombre="Juan";
persona.ape1="Garcia";
persona.edad=34;
persona.getNombreCompleto=function() {
    return this.nombre+this.ape1;
};

  • Mediante un constructor

function Persona() {
  this.nombre="Juan";
  this.ape1="Garcia";
  this.edad=34;
  this.getNombreCompleto=function() {
    return this.nombre+this.ape1;
  };
}

var persona=new Persona();

Funciones

Hay unas formas de crear funciones

  • La clásica

function sumar(a,b) {
  return a+b;
}

var c=sumar(1,2);

  • Como una variable

var sumar=function (a,b) {
  return a+b;
}

var c=sumar(1,2);

  • Podemos hacer funciones que retornan funciones y llamarlas directamente.

function getFunction() {

  var sumar=function (a,b) {
    return a+b;
  }

  return sumar;
}

var c=getFunction()(1,2);

Closure

Ahora vamos a ver una de las cosas mas raras para un programador Java. Una closure. Inicialmente es como un simple puntero a una función, algo como lo que ya existía en C, pero hay algo más. Veamos el siguiente ejemplo:

function getFunction() {

  var extra=100;

  var sumar=function (a,b) {
    return a+b+extra;
  }

  return sumar;
}

var sumaClosure=getFunction();

var c=sumaClosure(1,2);

Al ejecutar el ejemplo , la variable c vale 103. Igual no te parece raro pero cuando se está ejecutando la función sumaClosure,ya no debería existir la variable extra pero si que existe y la función sumaClosure aun puede usar su valor aun cuando ya no estamos dentro de getFunction. Es es realmente una closure. Una función que se ejecuta en el contexto de donde se creo no donde está ahora. Puede parecer que esto es poco útil, pero con tanta llamada asíncrona en JavaScript es realmente útil.

El ejemplo lo podemos liar un poco mas añadiendo nuevas variables llamadas extra y veremos como no afecta al resultado, éste sigue siendo 103:

var extra=1000;

function getFunction() {

  var extra=100;

  var sumar=function (a,b) {
    return a+b+extra;
  }

  return sumar;
}

extra=1100;

var fn=getFunction();

extra=1200;

var c=fn(1,2);

unidades/01_introduccion/04_repasojs.txt · Última modificación: 2014/09/07 17:38 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0