Objekte

Objekte besitzen

  • Eigenschaften: objektgebundene Variablen oder Konstanten

  • Methoden: objektgebundene Funktionen

Erstellung

Über Literal-Schreibweise (üblicher)

let myObj = {};  // leeres Objekt
console.log(myObj);

Über Constructor-Funktion

let myNewObj = new Object();  // leeres Objekt
console.log(myNewObj);

Eigenschaften definieren

Über Komma-separierte, key-value Paare. Das Kontext- Schlüsselwort this erlaubt den Zugriff auf das derzeitige Objekt.

let book = {
    mainTitle:          "JavaScript",
    subTitle:           "kurz und gut",
    target:             "Anfänger und Fortgeschrittene",
    price:              49.99,
    "Händler Preis":    19.99,  // key als String angelegt
    showTitle:          function() {
                            // console.log(book.mainTitle);  // nicht so
                            console.log(this.mainTitle, this.subTitle);  // nutze 'this'
                        }
};

console.log(book);  // Eigenschaften haben keine definierte Reihenfolge

Property-Keys (Eigenschaft) mit Sonderzeichen lassen sich per String definieren (hier: “Händler Preis”), müssen dann über Property Access ausgelesen werden (siehe unten).

Eigenschaft auslesen

Über die Punkt-Notation des Objekts:

console.log(book.mainTitle);
console.log(book.price);

Über den Property Access:

Wenn der Bezeichner als String vorliegt oder als String angelegt wurde, ist der Zugriff über die Punktnotation nicht möglich. Hier muss über den Property Access erfolgen

console.log(book."Händler Preis"); // geht nicht!!
console.log(book["Händler Preis"]); // OK! Über Property Access

Eigenschaft ändern

Genauso wie auslesen über Punktnotation oder Property Access.

book.mainTitle = "Python";
console.log(book.mainTitle); // "Python"
book["Händler Preis"] = 30.00
console.log(book["Händler Preis"]); // 30.00

Eigenschaft hinzufügen und löschen

Über delete löschen.

// neue Eigenschaft
book.inStock = true;
delete book.inStock;
console.log(book.inStock); // undefined

Methoden aufrufen

Über die Punktnotation.

book.showTitle();  // Python kurz und gut

Objektdefinition in ES6

In ES6 können Variablen als gleichnamige Eigenschaften in Objekte eingefügt werden.

let price = 42.99, cat = "Office Drinks";

// ES5
let product_1 = {
    name:       "Talisker",
    prince:     price,
    cat:        cat
}
console.log(product_1);

// ES6
let  product_2 = {
    name: "Glenfiddich",
    price,
    cat,
    sellerPrice: (price -15)
}
console.log(product_2);

Beispiel: Date Objekt

Allerhand Möglichkeiten zum Erhalten, Manipulieren und Ausgeben von Datum und Uhrzeit.

// erzeugen
let today = new Date();
console.log(today);

// getter
console.log(today.getDate()); // Tag im Monat (1 ... 31)
console.log(today.getMonth()); // Monat (0 - 11)
console.log(today.getDay()); // Wochentag (0 - 6, 0 = Sonntag)
console.log(today.getFullYear()); // Jahr
console.log(today.getHours()); // Uhrzeit Stunde
console.log(today.getMinutes()); // Uhrzeit Minute
console.log(today.getSeconds()); // Uhrzeit Sekunde
console.log(today.getMilliseconds()); // Uhrzeit Millisekunde

// JS-TimeStamp (Millisekunden seit 1.1.1970, Unix Timestamp * 1000)
console.log(today.getTime());
console.log(Date.now());

// setter
// Bestandteile Datum ändern
let newDate = new Date();
newDate.setFullYear(2224); // Jahr
newDate.setMonth(11); // Monat (April)
newDate.setDate(24); // Tag im Monat
newDate.setHours(20);
newDate.setMinutes(30);
newDate.setSeconds(0);

console.log(newDate);

// mit Datum rechnen
today.setDate(today.getDate() - 1);
today.setDate(today.getDate() + 42);

console.log(today);

// Datum mit Date-String erzeugen
console.log(new Date("Dec 24 2024 20:30:00"));
console.log(new Date(2024,11));
console.log(new Date(2024,11,6,19,23,15));

let myDate = new Date(1111111111111111); // timestamp (epoch time)
myDate.setTime(1111111111111);
console.log(myDate);

// UTC - Weltzeit
let worldTime = new Date();
worldTime.setUTCFullYear(2025);
worldTime.setUTCMonth(5);
worldTime.setUTCHours(15);

console.log(worldTime); // Angabe der UTC Zeit -> wird in lokaler Zeit ausgegeben (e.g. CEST)
console.log(worldTime.getUTCHours()); // 15

// in UTC Zeit umwandeln
let utcDate = new Date(Date.UTC(2024, 7, 31, 14, 42, 11));
console.log(utcDate);

// Zeitstring erzeugen
console.log(utcDate.toUTCString());  // UTC Zeit: Sat, 31 Aug 2024 14:42:11 GMT
console.log(utcDate.toString());  // lokale Zeitrechnung: Sat Aug 31 2024 16:42:11 GMT+0200 (Central European Summer Time)

// Formatierte Ausgabe
let now = new Date();

let formatedDate = now.toLocaleString();  // formatierte Zeitausgabe
formatedDate = now.toLocaleString("de-DE");  // deutsche Schreibweise
formatedDate = now.toLocaleString("ko-KR");  //koreanische Scrheibweise

formatedDate = now.toLocaleString("de-DE", { weekday: "long"});  // nur Wochentag in Langform (z.B. Freitag)

// Datumsausgabe parametrisieren
const OPTIONS =  {
    weekday: "long",
    month: "long",
    day: "numeric",
    year: "numeric",
    hour: "2-digit",
    minute: "2-digit",
    second: "2-digit"
}
formatedDate = now.toLocaleString("de-DE", OPTIONS); // z.B. Freitag, 15. November 2024 um 12:19:51

// nur Datum-Strings erhalten
formatedDate = now.toLocaleDateString();
// nur Uhrzeit erhalten
formatedDate = now.toLocaleTimeString();
// nur Stunde erhalten
formatedDate = now.toLocaleTimeString("de-DE", {hour: "2-digit"}); // z.B. 12 Uhr

console.log(formatedDate);