const lufthansa = { airline: "Lufthansa", iataCode: "LH", bookings: [], // neue Syntax (ES2020) einer Methode eines Objektes book(flightNumber, passengerName) { console.log( `${passengerName} booked a seat on ${this.iataCode}${flightNumber}` ); this.bookings.push({ flight: `${this.iataCode}${flightNumber}`, passengerName, }); }, }; lufthansa.book(573, "David Aster"); lufthansa.book(910, "Joanne Aster"); console.log(lufthansa.bookings); const eurowings = { airline: "Eurowings", iataCode: "EW", bookings: [], }; // book Funktion gehört nicht mehr zum lufthansa Objekt, sondern ist eine selbständige/eigene Funktion const book = lufthansa.book; // eurowings.book = book; // die Methode call ruft eigentlich book Methode mit zwei Argumenten (226, "David Aster") auf, und weise diese Methode zum Objekt eurowings zu // (call Methode zeigt auf das eurowings Objekt) // Ausgabe wird "David Aster booked a seat on EW226" sein book.call(eurowings, 226, "David Aster"); // Ausgabe wird "Joanne Aster booked a seat on EW897" sein book.call(eurowings, 897, "Joanne Aster"); // checken, ob die hinzugefügten Objekten im Feld bookings existieren console.log(eurowings.bookings); const swiss = { airline: "Swiss Air Lines", iataCode: "SW", bookings: [], }; // wiederverwendbare book Funktion in jedem Objekt book.call(swiss, 998, "David Aster"); // apply Methode, bekommt statt eines einzelnen Wert als Parameter, ein Feld der Werte let fligtData = [669, "David Aster"]; // apply Methode ist veraltete Methode und ist es nichts mehr oft benutzt book.apply(swiss, fligtData); console.log(swiss.bookings); // stattdessen benutzt man eine Kombination der call methode und des spread Operatoren fligtData = [109, "David Schmidt"]; book.call(swiss, ...fligtData);