Objectes i Orientació a Objectes
Els objectes són una de les estructures més potents de JavaScript. Permeten agrupar dades (propietats) i comportaments (mètodes) dins d’una mateixa entitat.
Creació i manipulació bàsica
const persona = {
nombre: "Juan",
edad: 27,
profesion: "Desarrollador",
};
Accés a propietats
console.log(persona.nombre); // "Juan"
console.log(persona["edad"]); // 27
Modificació
persona.edad = 31;
Afegeix propietats
persona.pais = "Espanya";
Elimina propietats
delete persona.profesion;
Object.keys / Object.values / Object.entries
Object.keys(persona); // ["nombre", "edad", "pais"]
Object.values(persona); // ["Juan", 31, "Espanya"]
Object.entries(persona); // [["nombre", "Juan"], ["edad", 31], ["pais", "Espanya"]]
Activitats (Objectes)
- Crear un objecte
book
ambtitle
,author
iyear
. - Afegir propietat
genero
, eliminaryear
. - Afegir mètode
getDescription()
que imprimeixi la descripció. - Iterar sobre totes les propietats amb
for...in
.
Subobjectes
const person = {
name: "Juan",
age: 28,
address: {
street: "123 Calle Principal",
city: "Ciudad",
country: "País",
},
};
Accedir-hi
console.log(person.address.city); // "Ciudad"
Modificar
person.address.city = "Nova Ciutat";
Activitats (Subobjectes)
- Crear subobjecte
address
ambstreet
,city
,country
. - Accedir i mostrar cada valor.
- Modificar valors.
- Afegir mètode
getFullAddress()
→ "123 Calle Principal, Ciudad, País" - Afegir
contact
ambphone
iemail
, i mostrar-ho.
Orientació a Objectes
Els objectes es poden definir amb classes a partir d'ES6:
class Persona {
constructor(nombre, edad) {
this.nombre = nombre;
this.edad = edad;
}
presentar() {
console.log(`Hola, sóc ${this.nombre} i tinc ${this.edad} anys.`);
}
}
const persona = new Persona("Joan", 18);
persona.presentar();
Activitat amb classe
- Crear classe
Animal
amb constructorname
i mètodespeak()
.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} fa un soroll`);
}
}
Getters i Setters
Permeten controlar l’accés a propietats com si fossin valors directes:
class Persona {
constructor(nom, edat) {
this._nom = nom;
this._edat = edat;
}
get nom() {
return this._nom;
}
set nom(valor) {
if (valor !== "") this._nom = valor;
}
}
Activitats amb getters/setters
- Crear getter/setter per
nom
amb validació. - Getter/setter per
edat
: no pot ser negatiu. - Intentar accedir a propietat privada amb
#
(ES2022).
class Persona {
#edat;
constructor(nom, edat) {
this.nom = nom;
this.#edat = edat;
}
get edat() {
return this.#edat;
}
set edat(valor) {
if (valor > 0) this.#edat = valor;
}
}
Objectes predefinits
Date
const avui = new Date();
console.log(avui.getFullYear());
console.log(avui.getDay()); // 0 (diumenge) - 6 (dissabte)
Math
console.log(Math.random()); // nombre entre 0 i 1
console.log(Math.round(3.7)); // 4
Array
const noms = ["Joan", "Esteve"];
noms.unshift("Jordi");
console.log(noms.length);
Aquest capítol et dona les bases de la programació orientada a objectes (OOP) en JavaScript, incloent gestió de dades complexes, encapsulació i creació de classes pròpies.