Object - JavaScript | MDN

Explanation

Desectructuring objetos

Un objeto

// un objeto cualquiera
const user = {
    username: 'juan.perez',
    password: 'loremipsumpwd123',
    lovesJavascript: true,
    favoriteNumber: 42,
		"touched tree": "Touched a tree", //props con espacios usan ""
		decirHola: function() {
        console.log('Hola a todo el mundo!');
    },
		decirHolaUser: function() {
				console.log( this.username + ' manda saludos!');
		}

};

// acceder o asignar propiedades
user.lovesJavascript;    // true
user.username;           // juan.perez
user['lovesJavascript']; // true
user['username'];        // juan.perez
user[passString];        // loremipsumpwd123

// elliminar propiedades
delete user.eliminarEstaPropiedad;
user.password = null
user.password = undefined

// operador binario
console.log("eliminarEstaPropiedad" in user) // -> false
console.log("favoriteNumber" in user) // -> true

// correr un metodo del objeto
nuevoObjeto.decirHola(); //Hola a todo el mundo!
nuevoObjeto.decirHolaUser(); //juan.perez manda saludos!

this en un objeto

/* this hace referencia al objeto donde es llamado
va y busca la referencia del objeto por si existe en el root y lo retorna*/

// aqui llama a username dentro de el objeto usuario
let usuario = {
	username: "juan.perez",

	decirHolaUser: function () { // 'juan.perez Amanda saludos!'
		console.log(this.username + " manda saludos!");
	},
  
	newSintax() { //"Esta sintaxis para function si maneja this: juan.perez"
		console.log("Esta sintaxis para function si maneja this: " + this.username);
	},

 
	notThis: () => //'arrow functions no majenan this: undefined'
		console.log("arrow functions no majenan this: " + this.username),
	
		
  
	exists: function () { // returns all the object that contains this
		return this;
	},

	that: this, // returns {} that is not this
}

usuario.a = 37 // aqui crea una posicion dentro de usuario
  
console.log(usuario.exists()) 
//{
//  username: 'juan.perez',
//  decirHolaUser: ƒ decirHolaUser(),
//  newSintax: ƒ newSintax(),
//  notThis: ƒ notThis(),
//  exists: ƒ exists(),
//  that: {},
//  a: 37
//}

Iterar en un objeto

Los objetos no son iterables por defecto. Tienen que ser apoyados por un metodo externo que se los permita.

// toma el objeto, itera sobre cada posicion, y retorna el key cada vez
for (let clave in usuario){
    console.log(clave);  // nos regresa la clave cada vez
    console.log(usuario[clave]); // obtiene el contenido buscando con la clave
}

Métodos x

// Object.assign escribe un objeto sobre otro
let objectA = {a: 1, b: 2};
Object.assign(objectA, {b: 3, c: 4});
console.log(objectA);
// → {a: 1, b: 3, c: 4}

Igualdades y referencias en objetos

Los objetos son posiciones en memoria que guardian valores. Por lo que un objeto solo es igual a otro si estan apuntando a la misma posicion en memoria.

let object1 = {value: 10};
let object2 = object1;
let object3 = {value: 10};

console.log(object1 == object2); // → true
console.log(object1 == object3); // → false