Sanfeliu
  1. Apunts
  2. JavaScript
  3. Lliçó 08 de 14

Objectes i orientació a objectes

Objectes en JavaScript: propietats i subobjectes, Object.keys, values i entries, classes, getters i setters, camps privats i objectes predefinits.

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)

  1. Crear un objecte book amb title, author i year.
  2. Afegir propietat genero, eliminar year.
  3. Afegir mètode getDescription() que imprimeixi la descripció.
  4. 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)

  1. Crear subobjecte address amb street, city, country.
  2. Accedir i mostrar cada valor.
  3. Modificar valors.
  4. Afegir mètode getFullAddress() → "123 Calle Principal, Ciudad, País"
  5. Afegir contact amb phone i email, 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, soc ${this.nombre} i tinc ${this.edad} anys.`);
  }
}
const persona = new Persona("Joan", 18);
persona.presentar();

Activitat amb classe

  1. Crear classe Animal amb constructor name i mètode speak().
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

  1. Crear getter/setter per nom amb validació.
  2. Getter/setter per edat: no pot ser negatiu.
  3. 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.