Objekte
## Objektliterale
let person = {
    name: "John Baker",
    age: 23,
    "exam rsults": [5,5, 5.0, 5.0, 6.0, 4.5]
}
Zugriff
console.log(person.name)
console.log(person["exam results"])
Zugriff auf nicht vorhandenes Attribut liefert "undefined"
Optional
console.log(person.age.month)  // TypeError
console.log(person.age?.month)  // undefined 
Erweitern
person.lastname = "Rüdiger"
Entfernen
let obj = {
    message: "ready",
    ready: true,
    tasks: 3
}
delete obj.message
Attribute in Objekt
let obj = {
    message: "ready",
    ready: true,
    tasks: 3
}
"message" in obj // true
Methoden
let cat = {
    type = "cat",
    sayHello: () => "Meow"
}
cat.sayHello() // Meow
## Interner Zugriff
let cat = {
    type = "cat",
    sayHello() { "Meow from " + this.type }
}
- Pfeilnotation funktioniert nicht
 
## Analyse
Keys
let obj = {a:1, b: 2}
Object.keys(obj)
Values
let obj = {a:1, b: 2}
Object.values(obj)
Zusammenführen
let obj1 = {a:1, b: 2}
let obj2 = {c:1, d: 2}
let obj3 = {e:1, f: 2}
Object.assign(obj1, obj2)
Object.assign(obj1, obj2, obj3)
let objCopy =  Object.assign({}, obj1)
objCopy == obj1 // false
Spread Syntax
let obj1 = {a:1, b: 2}
let obj2 = {c:1, d: 2}
{...obj1, ...obj2, f:4}
Objekte Destrukturieren
let obj = {a:1, b: 2}
let {a, b} = obj
console.log(a) //1