Objects

Wat zijn objecten?

Objects

  • Verzameling van:
    • Eigenschappen (properties)
    • Functies (methods)

Objectnotatie

const backpack = {
  color: "blue",
  zippers: 2,
  isOpen: false,
  open: function() {
    this.isOpen = true;
  }
}
  • Gebruik accolades {}
  • (meerdere) key-value pairs gescheiden door een komma ,

Voorbeeld

const igAccount = {
  username: "taylorswift",
  followers: 282000000,
  follow: function() {
    this.followers++;
  },
}

Social media profiel:

  • properties: username, profielfoto, bio,...
  • methods: volgen, liken, posten,...

Objects zijn niet nieuw voor ons

💡 We hebben al verschillende objecten gebruikt:

  • document
  • window
  • event-objecten in eventListeners
  • console
  • Math
  • ...

Properties & values

Data types

  • Strings
{ name: "Spotify Premium" }
  • Numbers
{ monthlyPrice: 10.99 }
  • Booleans
{ hasAdvertisements: false }

Data types

  • Arrays
{ playLists: ["Gym", "Chill", "Study"] }
  • Andere objecten
{ user: { name: "Brendan", age: 22 } }

Data types

const spotifyAccount = {
  name: "Spotify Premium",
  monthlyPrice: 10.99,
  hasAdvertisements: false,
  playLists: [
    "Gym",
    "Chill",
    "Study"
  ],
  user: {
    name: "Timo",
    age: 22
  }
}

Full example:

Eigenschappen uitlezen

  • Optie 1: dot notatie
const telefoon = {
  merk: "iPhone",
  model: "15 Pro",
  jaar: 2023
};

console.log(telefoon.merk); // "iPhone"

puntje . gevolgd door de key name

Eigenschappen uitlezen

  • Optie 2: bracket notatie
const telefoon = {
  merk: "iPhone",
  model: "15 Pro",
  jaar: 2023
};

const property = "model";
console.log(telefoon[property]); // "15 Pro"

vierkante haken [] met daartussen een variabele

Eigenschappen wijzigen

const auto = {
  merk: "Toyota",
  model: "Yaris",
  kleur: "blauw"
};

auto.kleur = "rood";

puntje . gevolgd door de reeds bestaande key name

Eigenschappen toevoegen

const auto = {
  merk: "Toyota",
  model: "Yaris",
  kleur: "rood"
};

auto.bouwjaar = 2022;

puntje . gevolgd door de nieuwe key name

Methods

Methods

  • = functies die bij een object horen
const taylorsInsta = {
  gebruiker: "taylorswift",
  aantalVolgers: 282000000,
  post: function(foto) {
    // code die foto toevoegt aan feed
  }
};

taylorsInsta.post("selfie.jpg");

this keyword

Verwijst naar het object zelf binnen methods

const student = {
  naam: "Julie",
  studie: "Digitale Vormgeving",
  jaar: 1,
  verhoogJaar: function() {
    this.jaar = this.jaar + 1;
    console.log(`${this.naam} gaat naar jaar ${this.jaar}`);
  }
};

student.verhoogJaar(); // "Julie gaat nu naar jaar 2"

⚠️ Gebruik géén arrow functions () => {} 
als je gebruik wilt maken van
this

Voorbeeld

Property wijzigen via method:

const student = {
  naam: "Noah",
  aanwezig: false,
  toggleAanwezigheid: function() {
    this.aanwezig = !this.aanwezig;
    
    console.log(`${this.naam}: ${this.aanwezig}`);
  }
};


buttonElement.addEventListener("click", () => {
  student.toggleAanwezigheid();
});

Objects vs. arrays

Arrays

  • Geordende lijst []
const playlist = ["Bad Guy", "Cruel Summer"];

console.log(playlist[1]); // "Cruel Summer"

index tussen vierkante haken []

  • Waarden via indexen
    💡 Array indexen starten altijd bij 0 (niet 1)

Objects

  • (ongeordende) verzameling eigenschappen
  • Waarden oproepen via naam (= key)
const festival = {
  naam: "Pukkelpop",
  uitverkocht: true
};

console.log(festival.naam); // "Pukkelpop"

key

Arrays van objecten

Arrays van objecten

  • = Gestructureerde lijst
  • Handig bij gelijkaardige objecten:
    • 💾 Items opslaan & aanpassen
    • 🔎 Items zoeken, filteren, sorteren,...
    • ➰ Itereren over items (➡️ loops)
  • 📋 JSON compatibel

Arrays van objecten

const afspeellijst = [
  { titel: "Blinding Lights", artiest: "The Weeknd", duur: 3.20 },
  { titel: "Heat Waves", artiest: "Glass Animals", duur: 3.59 },
  { titel: "Stay", artiest: "The Kid LAROI", duur: 2.21 }
];

Zoeken: .find()

const favorite = afspeellijst.find((song) => {
  return song.titel === "Stay";
});

console.log(favorite);
//{ titel: "Stay", artiest: "The Kid LAROI", duur: 2.21 }

Arrays van objecten

Filteren: .filter()

const longest = afspeellijst.filter(song => song.duur > 3.00);

console.log(longest); 
// [
//   { titel: "Blinding Lights", artiest: "The Weeknd", duur: 3.20 },
//   { titel: "Heat Waves", artiest: "Glass Animals", duur: 3.59 },
// ]
const afspeellijst = [
  { titel: "Blinding Lights", artiest: "The Weeknd", duur: 3.20 },
  { titel: "Heat Waves", artiest: "Glass Animals", duur: 3.59 },
  { titel: "Stay", artiest: "The Kid LAROI", duur: 2.21 }
];

Arrays van objecten

Itereren: .forEach((item, index) => {})

afspeellijst.forEach((nummer, index) => {
  console.log(`${index + 1}. ${nummer.titel} - ${nummer.artiest}`);
});

// 1. Blinding Lights - The Weeknd
// 2. Heat Waves - Glass Animals
// 3. Stay - The Kid LAROI
const afspeellijst = [
  { titel: "Blinding Lights", artiest: "The Weeknd", duur: 3.20 },
  { titel: "Heat Waves", artiest: "Glass Animals", duur: 3.59 },
  { titel: "Stay", artiest: "The Kid LAROI", duur: 2.21 }
];

Voorbeeld

DOM elementen aanmaken voor elke gebruiker:

const container = document.querySelector(".container");

const gebruikers = [
  { naam: "Sofie", avatar: "sofie.jpg", online: true },
  { naam: "Thomas", avatar: "thomas.jpg", online: false }
];

gebruikers.forEach((gebruiker) => {
  const profielDiv = document.createElement("div");
  profielDiv.innerHTML = `
    <img src="${gebruiker.avatar}">
    <h3>${gebruiker.naam}</h3>
    <span>${gebruiker.online ? "Online" : "Offline"}</span>
  `;
  container.appendChild(profielDiv);
});

1️⃣

2️⃣

3️⃣

Tips

Tips

Log alle methods en properties in de console

console.log(Window);

Log alle property keys van een object:

console.log(Object.keys(mijnObject));

Log alle methods & properties in een tabel

console.table(document);

11. Objects

By Lecturer GDM

11. Objects

  • 210