Creación de Objetos

Los Objetos en JavaScript poseen propiedades métodos (funciones), los cuales son referenciados por un key y existen varias formas de crearlos.

    //de forma literal
    var objeto1 = {};

    //instanciando un nuevo objeto con la "clase" Object
    var objeto2 = new Object();

Las propiedades y métodos se pueden asignar inmediatamente o se pueden agregar una vez creado el Objeto.

 
var objeto1 = { 
	color : "Azul", 
	2: "dos :)", 
	duplicar : function(numero){ return numero * 2; } 
}; 

objeto1.color; // azul 
objeto1.duplicar(3); // 6 

//asignamos mas metodos y propiedades al mismo objeto. 
objeto1.nombre = "Blue bird"; 
objeto1.triplicar = function(numero){ return numero * 3 };

objeto1.triplicar(3) // 9

Keys

Como acabamos de ver los keys nos permiten acceder a las propiedades del objeto usándolas después de un punto (objeto1.color), un key siempre es un String y esto es importante ya que si nos fijamos en el ejemplo anterior obtendremos un error si intentamos hacer: objeto1.2

Para poder acceder a propiedades que comiensen con numeros, o que sean String que contengan espacios usaremos []


objeto1["2"]; // "dos :)"

objeto1["tengo espacios"] = 8;

objeto1.duplicar( objeto1["tengo espacios"] ); // 16

 

También podemos guardar el key en una variable, operar con el y luego utilizarlo.

var num = 3

objeto1[num] // undefined

num = num - 1;

objeto1[num] // "dos :)"

typeof num // "number"

 

Pero acabo de decir que los keys siempre son un String, como puede funcionar si la variable num contiene un numero?.
Primero vamos a ver cuales son los key de objeto1 usando la funcion Object.keys

Object.keys(objeto1) // ["2", "color", "duplicar", "tengo espacios", "nombre", "triplicar"]

Podemos ver claramente como “2” es un String. Esto es posible ya que cualquier Key que usemos que no sea String, sera evaluado con su propio método .toString(). Asi es, los numeros tambien tienen métodos propios ‘heredados’ de Object, todo eso y mucho mas en nuestro siguiente post Objetos Funciones This.

Extras

Keys dinamicos en objetos literales.


var thekey = function(n){ return n+1 };

var keytwo = "dos";

var superobj = {

    "name" : "Elber Galarga",

    [ thekey(2) ]: 5,

    [keytwo] : {}

};


Object.keys( superobj ); // ["3", "name", "dos"]

Usando Keys que NO son String

// creamos un objeto con una funcion 'toString'
// la que devuelve el numero 3 
var a = { 
    toString : function(){ return "3" } 
}

// creamos un objeto 'vacio'
var obj2 = {}

//usaremos el objeto a como un key en el objeto obj2
obj2[a] = 'ocho'

Object.keys(obj2) // ["3"]

a.toString() // "3"

obj2.toString() // "[object Object]"

This article has 1 comments

Leave a Comment

Su dirección de correo no se hará público. Los campos requeridos están marcados *