JavaScript - ES5 Object Methods

Hallo zusammen, zukünftige JavaScript-Zauberer! Heute tauchen wir ein in die magische Welt der ES5 Object Methods. Keine Sorge, wenn Ihr mới im Programmieren seid – ich werde Euer freundlicher Guide durch dieses Abenteuer sein, und wir gehen schrittweise vor. Bis zum Ende dieses Tutorials werdet Ihr Objekte wie ein Profi manipulieren können!

JavaScript - ES5 Object Methods

JavaScript ES5 Object Methods

Bevor wir loslegen, lassen Sie uns schnell zusammenfassen, was Objekte in JavaScript sind. Denkt an ein Objekt als Behälter, der verwandte Informationen enthält. Zum Beispiel könnte ein "Auto"-Objekt Eigenschaften wie Farbe, Marke und Jahr enthalten.

let auto = {
farbe: "rot",
marke: "Toyota",
jahr: 2020
};

Jetzt hat ES5 mehrere mächtige Methoden zur Arbeit mit diesen Objekten eingeführt. Lassen Sie uns sie einzeln erkunden!

JavaScript Object.create() Methode

Die Object.create() Methode ermöglicht es uns, ein neues Objekt mit einem vorhandenen Objekt als Prototyp zu erstellen. Es ist, als ob Ihr JavaScript sagt: "Hey JavaScript, mach mir ein neues Objekt, das von diesem anderen Objekt erbt!"

let tier = {
makeSound: function() {
console.log("Ein allgemeiner Tierschrei");
}
};

let hund = Object.create(tier);
hund.makeSound(); // Ausgabe: Ein allgemeiner Tierschrei

hund.bark = function() {
console.log("Wuff wuff!");
};

hund.bark(); // Ausgabe: Wuff wuff!

In diesem Beispiel haben wir ein hund-Objekt erstellt, das vom tier-Objekt erbt. Der hund kann die makeSound-Methode vom tier verwenden, aber er hat auch seine eigene bark-Methode.

JavaScript Object.defineProperty() Methode

Object.defineProperty() ermöglicht es uns, eine Eigenschaft eines Objekts hinzuzufügen oder zu ändern. Es ist, als ob Ihr Auto nach dem Kauf eine neue Funktion hinzufügt!

let person = {};

Object.defineProperty(person, "name", {
value: "John",
writable: false,
enumerable: true,
configurable: true
});

console.log(person.name); // Ausgabe: John
person.name = "Jane"; // Das ändert den Namen nicht
console.log(person.name); // Ausgabe: John

Hier haben wir eine name Eigenschaft zum person-Objekt hinzugefügt. Wir haben sie als nicht schreibbar gesetzt, was bedeutet, dass wir ihren Wert nach der Initialisierung nicht ändern können.

JavaScript Object.defineProperties() Methode

Object.defineProperties() ist wie defineProperty(), aber auf Steroiden! Es ermöglicht uns, mehrere Eigenschaften gleichzeitig zu definieren.

let buch = {};

Object.defineProperties(buch, {
titel: {
value: "Der Große Gatsby",
writable: true
},
autor: {
value: "F. Scott Fitzgerald",
writable: false
}
});

console.log(buch.titel); // Ausgabe: Der Große Gatsby
console.log(buch.autor); // Ausgabe: F. Scott Fitzgerald

buch.titel = "Gatsby"; // Das funktioniert
buch.autor = "Scott"; // Das funktioniert nicht

console.log(buch.titel); // Ausgabe: Gatsby
console.log(buch.autor); // Ausgabe: F. Scott Fitzgerald

In diesem Beispiel haben wir zwei Eigenschaften für unser buch-Objekt auf einmal definiert. Der titel ist schreibbar, aber der autor nicht.

JavaScript Object.getOwnPropertyDescriptor() Methode

Diese Methode ermöglicht es uns, die Beschreibung einer Eigenschaft zu erhalten. Es ist, als ob man nach den Spezifikationen einer bestimmten Funktion Ihres Autos fragt.

let auto = {
marke: "Toyota"
};

let beschreibung = Object.getOwnPropertyDescriptor(auto, "marke");

console.log(beschreibung);
// Ausgabe:
// {
//   value: "Toyota",
//   writable: true,
//   enumerable: true,
//   configurable: true
// }

Hier erhalten wir die Beschreibung der marke Eigenschaft unseres auto-Objekts. Sie tells uns den Wert und ob die Eigenschaft schreibbar, enumerable und konfigurierbar ist.

JavaScript Object.getOwnPropertyNames() Methode

Diese Methode gibt ein Array aller Eigenschaften ( enumerabel oder nicht) zurück, die direkt in einem gegebenen Objekt gefunden werden. Es ist, als ob man eine Liste aller Funktionen Ihres Autos, auch der versteckten, bekommt!

let person = {
name: "John",
alter: 30
};

Object.defineProperty(person, "ssn", {
value: "123-45-6789",
enumerable: false
});

console.log(Object.getOwnPropertyNames(person));
// Ausgabe: ["name", "alter", "ssn"]

Obwohl wir ssn als nicht enumerable gemacht haben, enthält getOwnPropertyNames() es immer noch in der Liste.

JavaScript Object.getPrototypeOf() Methode

Diese Methode gibt das Prototyp des angegebenen Objekts zurück. Es ist, als ob man fragt: "Wer ist dein Elternteil?"

let tier = {
isst: true
};

let kaninchen = Object.create(tier);

console.log(Object.getPrototypeOf(kaninchen) === tier); // Ausgabe: true

Hier bestätigen wir, dass das Prototyp des kaninchen-Objekts indeed das tier-Objekt ist.

JavaScript Object.keys() Methode

Object.keys() gibt ein Array der eigenen enumerable Eigenschaftsnamen eines gegebenen Objekts zurück. Es ist, als ob man eine Liste aller sichtbaren Funktionen Ihres Autos bekommt.

let auto = {
marke: "Toyota",
modell: "Corolla",
jahr: 2020
};

console.log(Object.keys(auto));
// Ausgabe: ["marke", "modell", "jahr"]

Diese Methode gibt nur die enumerable Eigenschaften zurück, im Gegensatz zu getOwnPropertyNames(), die alle Eigenschaften zurückgibt.

JavaScript Object.freeze() Methode

Object.freeze() friert ein Objekt ein. Ein gefrorenes Objekt kann nicht mehr geändert werden. Es ist, als ob man sein Auto in einen Block von Eis legt – man kann seine Eigenschaften nicht mehr hinzufügen, entfernen oder ändern!

let auto = {
marke: "Toyota",
modell: "Corolla"
};

Object.freeze(auto);

auto.jahr = 2020; // Das funktioniert nicht
auto.marke = "Honda"; // Das funktioniert auch nicht

console.log(auto); // Ausgabe: { marke: "Toyota", modell: "Corolla" }

Nach dem Einfrieren des auto-Objekts können wir die jahr Eigenschaft nicht hinzufügen oder die marke ändern.

JavaScript Object.seal() Methode

Object.seal() versiegelt ein Objekt, verhindert das Hinzufügen neuer Eigenschaften und markiert alle vorhandenen Eigenschaften als nicht konfigurierbar. Es ist, als ob man sein Auto versiegelt – man kann keine neuen Funktionen hinzufügen, aber man kann die vorhandenen noch ändern.

let person = {
name: "John",
alter: 30
};

Object.seal(person);

person.geschlecht = "Männlich"; // Das funktioniert nicht
person.alter = 31; // Das funktioniert

delete person.name; // Das funktioniert nicht

console.log(person); // Ausgabe: { name: "John", alter: 31 }

Wir können alter ändern, aber wir können geschlecht nicht hinzufügen oder name löschen.

JavaScript Object.isFrozen() Methode

Diese Methode bestimmt, ob ein Objekt eingefroren ist. Es ist, als ob man überprüft, ob sein Auto wirklich in dem Eisblock gefangen ist!

let auto = {
marke: "Toyota"
};

console.log(Object.isFrozen(auto)); // Ausgabe: false

Object.freeze(auto);

console.log(Object.isFrozen(auto)); // Ausgabe: true

JavaScript Object.isSealed() Methode

Ähnlich wie isFrozen(), überprüft diese Methode, ob ein Objekt versiegelt ist.

let person = {
name: "John"
};

console.log(Object.isSealed(person)); // Ausgabe: false

Object.seal(person);

console.log(Object.isSealed(person)); // Ausgabe: true

JavaScript Object.preventExtensions() Methode

Diese Methode verhindert das Hinzufügen neuer Eigenschaften zu einem Objekt. Es ist, als ob man ein "Keine weiteren Funktionen"-Schild auf sein Auto stellt.

let auto = {
marke: "Toyota"
};

Object.preventExtensions(auto);

auto.modell = "Corolla"; // Das funktioniert nicht

console.log(auto); // Ausgabe: { marke: "Toyota" }

Nach dem Verhindern von Erweiterungen können wir die modell Eigenschaft nicht hinzufügen.

JavaScript Object.isExtensible() Methode

Diese Methode bestimmt, ob ein Objekt erweiterbar ist (ob neue Eigenschaften hinzugefügt werden können).

let auto = {
marke: "Toyota"
};

console.log(Object.isExtensible(auto)); // Ausgabe: true

Object.preventExtensions(auto);

console.log(Object.isExtensible(auto)); // Ausgabe: false

Hier ist eine Zusammenfassung aller Methoden, die wir behandelt haben:

Methode Beschreibung
Object.create() Erstellt ein neues Objekt mit dem angegebenen Prototypobjekt und Eigenschaften
Object.defineProperty() Fügt eine benannte Eigenschaft, die durch einen gegebenen Deskriptor beschrieben wird, zu einem Objekt hinzu
Object.defineProperties() Definiert neue oder ändert vorhandene Eigenschaften direkt auf einem Objekt, gibt das Objekt zurück
Object.getOwnPropertyDescriptor() Gibt eine Eigenschaftsbeschreibung für eine eigene Eigenschaft eines Objekts zurück
Object.getOwnPropertyNames() Gibt ein Array aller Eigenschaften, die direkt in einem gegebenen Objekt gefunden werden, zurück
Object.getPrototypeOf() Gibt das Prototyp des angegebenen Objekts zurück
Object.keys() Gibt ein Array der eigenen enumerable Eigenschaftsnamen eines gegebenen Objekts zurück
Object.freeze() Frostet ein Objekt ein: anderes Code kann seine Eigenschaften nicht löschen oder ändern
Object.seal() Versiegelt ein Objekt, verhindert das Hinzufügen neuer Eigenschaften und markiert alle vorhandenen Eigenschaften als nicht konfigurierbar
Object.isFrozen() Bestimmt, ob ein Objekt eingefroren ist
Object.isSealed() Bestimmt, ob ein Objekt versiegelt ist
Object.preventExtensions() Verhindert das Hinzufügen neuer Eigenschaften zu einem Objekt
Object.isExtensible() Bestimmt, ob ein Objekt erweiterbar ist

Und das war's! Ihr habt gerade eine großartige Tour durch die ES5 Object Methods gemacht. Denkt daran, Übung macht den Meister,also zögert nicht, diese Methoden in eurem eigenen Code auszuprobieren. Viel Spaß beim Programmieren, zukünftige JavaScript-Meister!

Credits: Image by storyset