Tabla de Contenidos

JavaScript

Básico

Tipos de datos

Strings

Acciones:

Propiedades:

Métodos:

Parsear a:

Arrays

Creación:

var x = new Array(); // x es un nuevo array
var x = new Array(5); // x es un nuevo array de 5 elementos
var x = [5]; // x es un nuevo array de 5 elementos
var x = new Array(); x[0] = "car"; // x es un nuevo array y se le ha asignado un valor

Añadir un elemento al final del array:

myArray[myArray.length] = someValue;

Saber si un elemento existe en el array:

function existsOnArray (value, array) {
    return (array.indexOf(value) != -1);
}

Propiedades:

Métodos:

Arrays asociativos

new myArray = new Array();
myArray["abc"] = 200;
myArray["xyz"] = 300;
 
var myArray = { "abc":200, "xyz": 300};
alert(myArray["abc"]); // output: 200
 
for(key in myArray) {
   alert("key " + key
         + " has value "
         + myArray[key]);
}

Bucles

for(key in object) {
   if(object.hasOwnProperty(key) {
      ...then do something...
   }
}

Condicionales

Orientado a Objetos

Hay que tener en cuenta las dos siguientes frases al programar con JavaScript:

  1. Los objetos son diccionarios.
  2. Los métodos son objetos.

Diccionarios

Los objetos en JavaScript funcionan como pares de clave-valor, como si fuesen diccionarios.

var p = new Object();
p.x = 3;
p.y = 5;
message.innerHTML = p.x + "," + p.y; 

Es lo mismo que:

var p = new Object();
p["x"] = 3;
p["y"] = 5;
message.innerHTML = p["x"] + "," + p.y; 

Funciones como variables

El hecho que un método (o sea, una función) sea un objeto significa que puede ser asignada a una variable:

var p = new Object();
p["x"] = 3;
p.y = 5;
p["print"] = function() {
  message.innerHTML = p.x + "," + p.y;
}

Otro ejemplo más claro de como asignar una funcion a un objeto:

function add(point) {
      return point.x + point.y;
}
 
var myFunc = add
var p = { x: 1, y:1 };
var result = myFunc(p);
// Devolverá 2
alert(result); 

Objetos literales

Existe otra forma de definir objetos en JavaScript (denominada literal), esta es directa y no requiere de declaración:

var p =
{
    x : 5,
    y : 3,
    print : function() { message.innerHTML = p.x + ',' + p.y; }
}
p.print(); 

O…

var person =
{
    name: "Scott Allen",     createdDate: new Date()
    website: "OdeToCode.com",
    address: { state: "MD", postalCode: "21044" },
};
 
alert(person.address.state);
alert(person.createdDate); 

Métodos de un objeto

var point1 =
{
    x: 3,
    y: 5,
    add: function(otherPoint)
         {
             this.x = this.x + otherPoint.x;
             this.y = this.y + otherPoint.y;
         }
};

Constructores

function Point(x,y)
{
    this.x = x;
    this.y = y;
}
var p1 = new Point(3,5);
alert(p1.x, p1.y); 

O lo siguiente también sería válido:

function Point(x,y)
{
    this.x = x;
    this.y = y;
    this.add = function(point2)
        {
            this.x += point2.x;
            this.y += point2.y;
        }
}
var p1 = new Point(3,5);

Avanzado

Closures

Podemos crear una función parametrizando su código interno y devolviéndola para que luego sea usada con sus propios argumentos:

var buildfn = function(csvfile, headers) {
    var response2console = function(result, response) {
        if (result instanceof Error) {
            console.error('Error: ' + util.format(response.message));
        } else {
            console.error("Wrote %s", csvfile);
            fs.writeFileSync(csvfile, result);
            csv2console(csvfile, headers);
        }
    };
    return response2console;
};

Notas

Snippets

String.Format

String.format = function() {
    var s = arguments[0];
    for (var i = 0; i < arguments.length - 1; i++) {
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[i + 1]);
    }
    return s;
}