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