js-Methode zum Löschen eines Felds in einem Objekt

js-Methode zum Löschen eines Felds in einem Objekt

Dieser Artikel stellt hauptsächlich die Implementierung von js zum Löschen eines Felds in einem Objekt vor und teilt sie wie folgt mit Ihnen:

// Die folgende Methode ändert das Originalobjekt nicht let item = {
    Name: 'Zhang San',
    Alter:'18',
    Geschlecht: männlich
   };
   console.log(item) // {Alter: "18",Geschlecht: "männlich",Name: "Zhang San"}


   let { Alter, ... Params } = Artikel;
   console.log(item) // {Alter: "18",Geschlecht: "männlich",Name: "Zhang San"}
   console.log(Typ von Parametern.Alter) // undefiniert
   console.log(params) // {gender: "Generikum",name: "Geschlecht"}

   // Die folgenden Methoden ändern das Objekt direkt let item1 = {
    Name: 'Zhang San',
    Alter:'18',
    Geschlecht: männlich
   };
   console.log(item1) // {Alter: "18",Geschlecht: "männlich",Name: "Zhang San"}
   lösche item1.name;
   console.log(Typ von item1.name) // undefiniert
   console.log(item1) // // {Alter: "18",Geschlecht: "männlich"}

Entgegen der landläufigen Meinung hat der Löschoperator nichts mit der direkten Freigabe von Speicher zu tun. Die Speicherverwaltung erfolgt indirekt durch das Unterbrechen von Referenzen. Weitere Informationen finden Sie auf der Seite „Speicherverwaltung“.

Der Löschoperator entfernt die angegebene Eigenschaft aus einem Objekt. Wenn das Löschen erfolgreich ist, wird „true“ zurückgegeben, andernfalls „false“.

In den folgenden Situationen müssen jedoch wichtige Überlegungen angestellt werden:

Wenn die Eigenschaft, die Sie löschen möchten, nicht vorhanden ist, hat „delete“ keine Auswirkung, gibt aber dennoch „true“ zurück.
Wenn in der Prototypenkette des Objekts eine Eigenschaft mit demselben Namen wie die zu löschende Eigenschaft vorhanden ist, verwendet das Objekt nach dem Löschen der Eigenschaft die Eigenschaft in der Prototypenkette (d. h. der Löschvorgang funktioniert nur für seine eigenen Eigenschaften).
Eine mit var deklarierte Eigenschaft kann nicht aus dem globalen Gültigkeitsbereich oder aus dem Gültigkeitsbereich einer Funktion gelöscht werden.
In diesem Fall kann der Löschvorgang keine Funktion im globalen Gültigkeitsbereich löschen (unabhängig davon, ob die Funktion aus einer Funktionsdeklaration oder einem Funktionsausdruck stammt).
Mit Ausnahme von Funktionen im globalen Bereich, die nicht gelöscht werden können, können Funktionen in Objekten mit der Löschoperation gelöscht werden.
Eine mit let oder const deklarierte Eigenschaft kann nicht aus dem Bereich gelöscht werden, in dem sie deklariert ist.
Nicht konfigurierbare Eigenschaften können nicht entfernt werden. Dies bedeutet, dass Eigenschaften integrierter Objekte wie Math, Array, Object und Eigenschaften, die mit der Methode Object.defineProperty() auf nicht einstellbar gesetzt wurden, nicht gelöscht werden können.

Der folgende Codeblock gibt ein einfaches Beispiel:

var Mitarbeiter = {
 Alter: 28,
 Name: 'abc',
 Bezeichnung: "Entwickler"
}

console.log(delete Employee.name); // gibt true zurück
console.log(delete Employee.age); // gibt true zurück

// Beim Versuch ein nicht vorhandenes Attribut zu löschen // Dies gibt ebenfalls true zurück
console.log(delete Employee.salary); // gibt true zurück

Nicht konfigurierbare Eigenschaften

Wenn für eine Eigenschaft festgelegt ist, dass sie nicht festgelegt werden kann, hat der Löschvorgang keine Auswirkung und gibt „false“ zurück. Im strikten Modus wird ein SyntaxError ausgelöst.

var Mitarbeiter = {};
Object.defineProperty(Mitarbeiter, 'Name', {konfigurierbar: false});

console.log(delete Employee.name); // gibt false zurück

Nicht einstellbare Eigenschaften, die durch var, let und const erstellt wurden, können durch den Löschvorgang nicht gelöscht werden.

var nameOther = "XYZ";

// Globale Eigenschaften erhalten Sie über die folgenden Methoden:
Object.getOwnPropertyDescriptor(Fenster, 'NameOther');

// Ausgabe: Objekt {Wert: "XYZ",
// beschreibbar: true,
// aufzählbar: wahr,
// konfigurierbar: false}

// Da "nameOther" mit dem Schlüsselwort var hinzugefügt wird,
// Es ist auf nicht konfigurierbar eingestellt
nameOther löschen; // false zurückgeben

Im strengen Modus löst ein solcher Vorgang eine Ausnahme aus.

Strenger Modus vs. nicht strenger Modus

Wenn im strikten Modus die Löschoperation auf einen direkten Verweis auf eine Variable, einen Funktionsparameter oder einen Funktionsnamen angewendet wird, wird ein Syntaxfehler (SyntaxError) ausgelöst. Um Syntaxfehler im strikten Modus zu vermeiden, müssen Sie daher den Löschoperator in der Form „Lösche Objekt.Eigenschaft“ oder „Lösche Objekt[,,Eigenschaft‘]“ verwenden.

Object.defineProperty(globalThis, 'variable1', { Wert: 10, konfigurierbar: true, });
Object.defineProperty(globalThis, 'variable2', { Wert: 10, konfigurierbar: false, });

console.log(Variable1 löschen); // wahr

// Syntaxfehler im strikten Modus.
console.log(variable2 löschen); // falsch

Funktion func(param) {
 // Syntaxfehler im strikten Modus.
 console.log(Parameter löschen); // falsch
}

// Syntaxfehler im strikten Modus.
console.log(Löschfunktion); // falsch

Jede mit var deklarierte Variable wird als nicht einstellbar markiert. Im folgenden Beispiel ist das Gehalt nicht einstellbar und kann nicht gelöscht werden. Im nicht strengen Modus gibt der folgende Löschvorgang „false“ zurück.

Funktion Mitarbeiter() {
 Gehalt streichen;
 var Gehalt;
}

Mitarbeiter();

Sehen wir uns an, wie sich derselbe Code im strengen Modus verhält. Wirft einen SyntaxError, anstatt „false“ zurückzugeben.
"streng verwenden";

Funktion Mitarbeiter() {
 Gehalt löschen; // SyntaxError
 var Gehalt;
}

// Ebenso führt jede direkte Verwendung des Löschoperators auf eine beliebige Funktion // zu einem Syntaxfehler.

Funktion DemoFunktion() {
 //etwas Code
}

Demofunktion löschen; // Syntaxfehler

Beispiel

// Attribut „adminName“ im globalen Bereich erstellen adminName = „xyz“;

// Erstellen Sie die Eigenschaft „empCount“ im globalen Bereich. // Da wir var verwendet haben, wird es als nicht konfigurierbar markiert. Ebenso sind let oder const nicht konfigurierbar.
var empCount = 43;

Mitarbeiterdetails = {
 Name: "xyz",
 Alter: 5,
 Bezeichnung: 'Entwickler'
};

// adminName ist eine Eigenschaft mit globalem Gültigkeitsbereich.
// Da es nicht mit var erstellt wurde, kann es gelöscht werden.
// Daher ist es konfigurierbar.
adminName löschen; // gibt true zurück

// Im Gegensatz dazu ist empCount nicht konfigurierbar.
// weil beim Erstellen var verwendet wurde.
empCount löschen; // gibt false zurück

// Mit delete können die Attribute eines Objekts gelöscht werden delete EmployeeDetails.name; // gibt true zurück

// Auch wenn die Eigenschaft nicht existiert, wird „true“ zurückgegeben.
lösche EmployeeDetails.salary; // gibt true zurück

// Löschen hat keine Auswirkung auf integrierte statische Eigenschaften delete Math.PI; // gibt false zurück

// EmployeeDetails ist eine Eigenschaft mit globalem Gültigkeitsbereich.
// Da es ohne „var“ definiert ist, wird es als konfigurierbar markiert.
EmployeeDetails löschen; // gibt true zurück

Funktion f() {
 var z = 44;

 // Löschen hat keine Auswirkung auf lokale Variablennamen. Löschen z; // gibt „false“ zurück.
}

Löschen und Prototypkette

Im folgenden Beispiel löschen wir die eigene Eigenschaft eines Objekts, während eine gleichnamige Eigenschaft in der Prototypenkette vorhanden ist:

Funktion Foo() {
 diese.bar = 10;
}

Foo.prototype.bar = 42;

var foo = neues Foo();

// Gibt „true“ zurück, da die gelöschte Eigenschaft die eigene Eigenschaft des Foo-Objekts ist. delete foo.bar;

// foo.bar ist weiterhin verfügbar, da es in der Prototypenkette verfügbar ist.
konsole.log(foo.bar); //42

// Lösche die Eigenschaft aus dem Prototyp delete Foo.prototype.bar; //true

// Da die Eigenschaft „bar“ entfernt wurde, kann sie nicht mehr von Foo geerbt werden.
console.log(foo.bar); //undefiniert

Löschen eines Array-Elements

Wenn Sie ein Array-Element löschen, wird die Länge des Arrays nicht beeinflusst. Dies gilt auch, wenn Sie das letzte Element des Arrays löschen.

Wenn ein Array-Element mit dem Löschoperator gelöscht wird, gehört das gelöschte Element nicht mehr zum Array. Im folgenden Beispiel wird delete zum Löschen von Bäumen verwendet[3].

var Bäume = ["Redwood", "Lorbeer", "Zeder", "Eiche", "Ahorn"];
Bäume löschen[3];
wenn (3 in Bäumen) {
  // Dies wird nicht ausgeführt}

Wenn ein Array-Element weiterhin vorhanden sein soll, aber den Wert „undefined“ hat, können Sie dem Element „undefined“ zuweisen, statt „delete“ zu verwenden. Im folgenden Beispiel wird trees[3] der Wert undefined zugewiesen, das Element existiert aber weiterhin.

var Bäume = ["Redwood", "Lorbeer", "Zeder", "Eiche", "Ahorn"];
Bäume[3] = undefiniert;
wenn (3 in Bäumen) {
  // Dies wird ausgeführt}

Wenn Sie ein Array-Element entfernen möchten, indem Sie den Inhalt des Arrays ändern, verwenden Sie die Methode splice(). Im folgenden Beispiel wird trees[3] mithilfe von splice() aus dem Array entfernt.

var Bäume = ['Redwood', 'Lorbeer', 'Zeder', 'Eiche', 'Ahorn'];
Bäume.spleißen(3,1);
console.log(Bäume); // ["Redwood", "Lorbeer", "Zeder", "Ahorn"]

Dies ist das Ende dieses Artikels zum Löschen eines Felds in einem Objekt mit js. Weitere Informationen zum Löschen eines Felds in einem Objekt mit js finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So löschen Sie eine Eigenschaft eines Objekts in JavaScript
  • Detaillierte Erklärung zum Löschen einer Eigenschaft in einem Objekt in JS
  • js löscht null, undefinierte, leere Objekte und leere Arrays in Objekten/Arrays
  • js delete usage (Objekteigenschaften und Variablen löschen)
  • Detaillierte Erläuterung der Eigenschaften und Methoden zum dynamischen Hinzufügen, Ändern und Löschen von Objekten in Javascript
  • JavaScript entfernt unnötige Eigenschaften eines Objekts

<<:  jQuery realisiert die volle Funktion des Einkaufswagens

>>:  Zusammenfassung von 11 erstaunlichen Best Practices für die Refaktorierung von JavaScript-Code

Artikel empfehlen

Vue+js realisiert Video-Ein- und Ausblendeffekte

Vue+js realisiert das Ein- und Ausblenden des Vid...

Einführung in die Installation und Konfiguration von JDK unter CentOS-Systemen

Inhaltsverzeichnis Vorwort Überprüfen und deinsta...

Detaillierte Beschreibung der Unicode-Signatur-BOM

Unicode-Signatur-BOM – Was ist die BOM? BOM ist di...

MySQL-Gruppe durch Gruppieren mehrerer Felder

Bei täglichen Entwicklungsaufgaben verwenden wir ...

So ändern Sie die Server-UUID in MySQL

Quelle des Problems: Wenn der Slave-Server der ge...

Lösen Sie das Problem der Verwendung des Swiper-Plugins in Vue

Da ich dieses Plugin beim Schreiben einer Demo ve...

Müssen die Texte der Website noch gestaltet werden?

Viele fragen sich vielleicht: Muss der Text auf d...

Beispiel für die Implementierung einer virtuellen Liste im WeChat Mini-Programm

Inhaltsverzeichnis Vorwort analysieren Erste Rend...

Tutorial zu HTML-Tabellen-Tags (3): Breiten- und Höhenattribute WIDTH, HEIGHT

Standardmäßig werden Breite und Höhe der Tabelle ...

...

Ein kurzer Vortrag über MySQL-Pivottabellen

Ich habe eine Produktteiletabelle wie diese: Teil...