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 = [ const budget = [
{ value: 250, description: "Sold old TV 📺", user: "david" }, { value: 250, description: "Sold old TV 📺", user: "david" },
{ value: -45, description: "Groceries 🥑", user: "david" }, { value: -45, description: "Groceries 🥑", user: "david" },
@ -9,10 +11,17 @@ const budget = [
{ value: -1800, description: "New Laptop 💻", user: "david" }, { 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, david: 1500,
joanne: 100, 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 getLimit = user => spendingLimits?.[user] ?? 0;
const addExpense = function (value, description, user = "david") { const addExpense = function (value, description, user = "david") {
// if (!user) user = "david"; // statt einen solchen urprünglichen Wert in der if Anweisung zu erstellen, // 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, // 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 // 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) for (const entry of budget)
if (entry.value < -getLimit(entry.user)) entry.flag = "limit"; if (entry.value < -getLimit(entry.user)) entry.flag = "limit";
}; };