Los objetos reúnen ciertos características para que todos tengan ese mismo tipo:
//Objeto
var usuario1 = {
//key: value
nombre: 'Adrián',
apellido: 'Garcia',
edad: 25
}
//otro Objeto
var usuario2 = {
//key: value
nombre: 'Damaris',
apellido: 'Soto',
edad: 22
}
//Abtener el atributo o key de un objeto
console.log(usuario1) //todo el objeto
console.log(usuario1.edad) //por parametro
//Obtener atributo por medio de una funcion
//... enviando solo el atributo
function imprimir (nombre) {
console.log(nombre)
console.log(nombre.toUpperCase())
}
imprimir(usuario1.nombre)
//... enviando todo el objeto
function imprimir (persona) {
console.log(persona)
console.log(persona.nombre)
console.log(persona.nombre.toUpperCase())
var { nombre } = persona //... obtiene solo el parametro del objeto
console.log(nombre);
}
imprimir(usuario1)
//... enviando el objeto y obteniendo solo los atributos que nos interesan
function imprimir ({ nombre, apellido }) {
console.log(`${nombre} ${apellido}`)
console.log(`${nombre.toUpperCase()} ${apellido.toUpperCase()}`)
}
imprimir(usuario1)
//... incluso podemos declarar los atributos que enviemos, aunque no exista objeto
imprimir({ nombre: 'pepito', apellido: 'nada'})
JavaScript se comporta distinto con los objetos, si los modificamos dentro de una función el cambio se ve reflejado fuera de la función.
//El objeto tendra su atributo cambiado con esta función
function cumpleaños(persona) {
persona.edad += 1
}
//cumpleaños(usuario1)
//usuario1
//Regresa una copia y ahi edita el atributo, y lo regresa
function cumpleañosFake(persona) {
return {
...persona,
edad: persona.edad + 1
}
}
//cumpleaños(usuario1)
//usuario1