Der Zweck des Delete-Operators in Javascript, wie Sie sich vielleicht denken können, ist es, Dinge zu löschen. Genauer gesagt, er soll Objekteigenschaften löschen. Der delete-Operator ist dafür gedacht, auf Objekteigenschaften angewendet zu werden. Er wirkt sich nicht auf Variablen oder Funktionen aus.
Nach dem Löschen kann die Eigenschaft erst wieder verwendet werden, wenn sie dem Objekt wieder hinzugefügt wurde.
Javascript Delete Operator
Javascript delete ist ein eingebauter Operator, der die Eigenschaft aus dem Objekt entfernt. Der Löschoperator entfernt sowohl den Wert der Eigenschaft als auch die Eigenschaft selbst. Wenn es keine weiteren Referenzen auf dieselbe Eigenschaft gibt, dann wird sie schließlich automatisch freigegeben.
Der Löschoperator hat auch einen Rückgabewert. Gelingt es ihm, die Eigenschaft zu löschen, gibt er true zurück. Wenn es ihm nicht gelingt, die Eigenschaft zu entfernen, weil die Eigenschaft nicht beschreibbar ist, gibt er false zurück, oder wenn er sich im Strict-Modus befindet, gibt er einen Fehler aus.
Syntax
Die Syntax des Javascript-Löschoperators ist die folgende.
delete object.property// ordelete object
Lassen Sie uns das folgende Beispiel betrachten.
// app.jslet appObj = {a: 21, b: 22, c: 23}; console.log(appObj.a);delete appObj.a;console.log(appObj);
Sehen wir uns die Ausgabe an.
Eine Sache, die Sie im Auge behalten müssen, ist, dass der Delete-Operator nicht auf vordefinierte JavaScript-Objekteigenschaften angewendet werden sollte. Es kann Ihre Anwendung zum Absturz bringen.
Wenn Sie nun versuchen, das ganze Objekt zu löschen, dann ist das für Sie möglicherweise nicht möglich. Es können nur die Eigenschaften aus dem Objekt entfernt werden und nicht das gesamte Objekt.
// app.jslet appObj = {a: 21, b: 22, c: 23}; console.log(appObj);delete appObj;console.log(appObj);
Sehen Sie sich die Ausgabe an.
Im Gegensatz zu dem, was die landläufige Meinung suggeriert, hat der Löschoperator in Javascript nichts mit dem direkten Freigeben von Speicher zu tun. Die Speicherverwaltung erfolgt indirekt durch das Auflösen von Referenzen.
Der Löschoperator entfernt die angegebene Eigenschaft aus dem Objekt. Bei erfolgreicher Löschung gibt er true zurück, andernfalls wird false zurückgegeben. Es ist jedoch wichtig, die folgenden Fälle zu beachten.
- Wenn die Eigenschaft, die Sie zu löschen versuchen, nicht im Objekt existiert, dann hat delete keine Wirkung und gibt true zurück.
- Wenn die Eigenschaft mit demselben Namen in der Prototypkette des Objekts existiert, dann wird ein Objekt nach dem Löschen die Eigenschaft aus der Prototypkette verwenden. Es wird also in der Hierarchie nach oben gehen.
Lassen Sie uns das folgende Beispiel für Wahr oder Falsch sehen.
// app.jslet appObj = {a: 21, b: 22, c: 23}; console.log(appObj);console.log(delete appObj.d);
Sehen Sie das folgende Beispiel.
Sie können sehen, dass, wenn die Objekt-Eigenschaft nicht existiert, und wenn Sie versuchen, diese Eigenschaft zu entfernen, die nicht existiert, dann wird es uns die wahr in der Ausgabe.
Benchmark des Delete-Operators in Javascript
Sie können den Benchmark hier sehen.
Delete ist der einzig wahre Weg, um die Eigenschaften des Objekts ohne Reste zu entfernen, aber er arbeitet ~ 100 Mal langsamer als sein „alternativer Weg“, der folgender ist.
object = undefined
Diese Alternative ist nicht der richtige Weg, um die Eigenschaft aus einem Objekt zu entfernen. Aber wenn Sie sie mit Bedacht einsetzen, können Sie einige Algorithmen drastisch beschleunigen.
So, wann verwendet man undefiniert und wann den Löschoperator?
Das Objekt kann als eine Menge von Schlüssel-Wert-Paaren betrachtet werden. Was ich als „Wert“ bezeichne, ist ein Primitiv oder ein Verweis auf ein anderes Objekt, das mit diesem „Schlüssel“ verbunden ist.
Verwenden Sie den delete-Operator, wenn Sie ein Ergebnisobjekt an den Code übergeben, über das Sie keine Kontrolle haben (oder wenn Sie sich selbst oder Ihr Team nicht sicher sind). Er löscht den Schlüssel aus der Hashmap.
let obj = { prop: 1 }; delete obj.prop;
Verwenden Sie den undefined, wenn Sie sich um die Performance sorgen. Es kann Ihrem Code einen exzellenten Schub geben.
Der Schlüssel bleibt an seinem Platz in der Hashmap, und nur der Wert wird durch ein Undefined ersetzt.
Verstehen Sie, dass die for in-Schleife immer noch über diesen Schlüssel iteriert.
let obj = { prop: 1 }; obj.prop = undefined;
Bei der obigen Methode funktionieren nicht alle Möglichkeiten, das Vorhandensein der Eigenschaft zu ermitteln, wie erwartet.
Dieser Code:
object.prop === undefined
verhält sich jedoch für beide Methoden gleichwertig.
Fazit
Die Notwendigkeit eines Javascript-Löschoperators besteht immer dann, wenn Sie eine Eigenschaft aus einem Objekt entfernen wollen. Manchmal werden JavaScript-Entwickler, anstatt eine Eigenschaft zu löschen, ihr den Wert null geben.
Abschließend ist das Entfernen einer Eigenschaft von einem Objekt in einem Javascript-Beispiel beendet.
Empfohlene Beiträge
Javascript Objekt Werte
Javascript Async / Await
Javascript Fetch API
Javascript Klasse
Javascript Import