Immutability des Objektes mit Object.freeze(<Objekt>) Verwendung hinzugefügt

This commit is contained in:
David 2022-11-17 15:10:56 +01:00
parent a08d1c4744
commit dba69ed807

View File

@ -1,3 +1,5 @@
"strict mode";
const budget = [
{ value: 250, description: "Sold old TV 📺", user: "david" },
{ value: -45, description: "Groceries 🥑", user: "david" },
@ -9,10 +11,17 @@ const budget = [
{ value: -1800, description: "New Laptop 💻", user: "david" },
];
const spendingLimits = {
const spendingLimits = Object.freeze({
// damit macht man Objekt unveränderlich (IMMUTABLE) (aber Objekt wird unveränderlich nur im 1 Level des Objektes.
// Objekte, die unter ein Objektes existieren, können geändert werden(damit wird nicht deepFreeze gemacht))
// Mit der Object freeze Methode Verwendung, kann man nach der Definierung des Objektes nicht mehr Eigenschaften hinzufügen
david: 1500,
joanne: 100,
};
});
spendingLimits.eva = 200; // das wird wegen des Object-freeze Methode nicht funktionieren
console.log(spendingLimits); // Das Objekt spendingLimits bleibt ungeändert
const getLimit = user => spendingLimits?.[user] ?? 0;
const addExpense = function (value, description, user = "david") {
// if (!user) user = "david"; // statt einen solchen urprünglichen Wert in der if Anweisung zu erstellen,
@ -44,7 +53,7 @@ const checkExpenses = function () {
// der Name einer Methode check, zu wenig beschreibt, was sie eigentlich checkiert,
// in unserem Fall wäre besser, checkExpenses, damit eindeutlich ist, was eigentlich diese Methode checkiert
// durch was das Loop geht. Besser als nur "el" für ein Element in dem Feld zu definieren, entry
// Besser als nur "el" für ein Element in dem Feld zu definieren, entry definiieren, damit man weisst welche Role spielt ein Element, wenn for Loop durch das Feld geht
for (const entry of budget)
if (entry.value < -getLimit(entry.user)) entry.flag = "limit";
};