Objetos en JavaScript
Este es el cuarto tutorial de la serie 'Mis apuntes JavaScript'. En este tutorial aprenderemos que son los objetos y como utilizarlos en JavaScript.
Índice
1. Los objetos
En JavaScript es muy común usar objetos. Un objeto es una especie de variable que tiene propiedades asociadas a él. Estas propiedades definen características del objeto y son básicamente variables. Po lo que una propiedad puede ser una variable, un objeto o incluso un método.
let people = {
name: "Andy",
family: {
father: "Papá",
mother: "Mamá",
},
saludar: function () {
console.log("Hola");
},
};
console.log(people); // { name: 'Andy' family: {...}}
people.saludar(); // Hola
Las funciones también pueden recibir objetos como parametros.
function printName(obj) {
console.log(`Mi nombre es ${obj.name} y mi edad es ${obj.age}`);
}
let yo = {
name: "Andy",
age: 22,
};
printName(yo); // Mi nombre es Andy y tengo 22 años
Pero si a nuestra función solo le interesa una propiedad del objeto podemos hacer una función que solo acepte dicha propiedad.
function printName({ name }) {
console.log(`Mi nombre es ${name}`);
}
let yo = {
name: "Andy",
age: 23,
};
printName(yo); // Mi nombre es Andy
También podemos crear una variable usando la propiedad de una función. La variable tomará el nombre de la propiedad del objeto.
let yo = {
name: "Andy",
age: 23,
};
let { name } = yo;
console.log(name); // Andy
2. Alcance de los cambios
Si pasamos a una función todo el objeto y lo modificamos dentro de la función, todo el objeto queda modificado.
let yo = {
name: "Andy",
age: 22,
};
function changeName(obj, new_name) {
obj.name = new_name;
}
changeName(yo, "AndyGeek");
console.log(yo); // { name: 'AndyGeek', age: 22 }
Pero si solo le mandamos la propiedad del objeto este no cambiará.
let yo = {
name: "Andy",
age: 23,
};
function changeName({ name }, new_name) {
name = new_name;
}
changeName(yo.name, "AndyGeek");
console.log(yo); // { name: 'Andy', age: 23 }
Una forma de escribir una función que cambie parametros de un objeto para luego devolverlos modificados es:
let yo = {
name: "Andy",
age: 23,
};
function changeName(obj, name) {
return {
...obj,
name: name,
};
}
let tu = changeName(yo, "AndyGeek");
console.log(tu); // { name: 'AndyGeek', age: 23 }
3. Comparación de objetos
Comparar objetos en JavaScript es comparar las referencias de memoria de los objetos. Por lo que no hay forma que dos objetos creados en distintas partes del código sean iguales a menos que uno de ellos referencie al otro.
var Andy = {
name: "Andy",
};
var otraPersona = {
name: "Andy",
};
console.log(Andy == otraPersona); //false
console.log(Andy === otraPersona); //false
Si queremos obtener objetos iguales solo bastaría con apuntar un nuevo objeto al mismo lugar de memoria de la siguiente manera.
Andy = otraPersona;
console.log(Andy === otraPersona); //true
console.log(Andy == otraPersona); //true
Luego si cambiamos el valor de otraPersona
también cambiará el valor de Andy
ya que las dos variables apuntan al mismo lugar de memoria.