Heim  >  Artikel  >  Web-Frontend  >  So löschen Sie Objektattribute in Javascript

So löschen Sie Objektattribute in Javascript

青灯夜游
青灯夜游Original
2021-05-18 11:52:218339Durchsuche

In JavaScript können Sie den Löschoperator verwenden, um die Attribute eines Objekts zu löschen. Sein Operand sollte ein Attributzugriffsausdruck sein, zum Beispiel „var obj={x:1};delete obj.x;“. Der Löschoperator kann nur freie Attribute löschen, keine geerbten Attribute.

So löschen Sie Objektattribute in Javascript

Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer. Der Löschoperator kann die Eigenschaften eines Objekts löschen. Sein Operand sollte ein Eigenschaftszugriffsausdruck sein. Überraschend ist, dass durch Löschen nur das Attribut vom Hostobjekt getrennt wird, die Attribute im Attribut jedoch nicht bearbeitet werden:

delete book.author; //book不再有属性author
delete book["main title"] //book不会再有属性"main title"

Der Löschoperator kann nur freie Attribute löschen, keine geerbten Attribute (um geerbte Attribute zu löschen, müssen Sie dies entfernen). (Eigenschaft des Prototypobjekts, für das sie definiert ist, und dies wirkt sich auf alle Objekte aus, die von diesem Prototyp erben).

Hinweis:


a={p:{x:1}};
b=a.p;
delete a.p;

Der Wert von b.x ist nach der Ausführung dieses Codes immer noch 1. Da noch Verweise auf gelöschte Eigenschaften vorhanden sind, kann es aufgrund dieses losen Codes in einigen JavaScript-Implementierungen zu Speicherverlusten kommen. Daher müssen Sie beim Zerstören des Objekts die Attribute in den Attributen durchlaufen und sie einzeln löschen.


Wenn der Löschausdruck erfolgreich oder ohne Nebenwirkungen (z. B. das Löschen eines nicht vorhandenen Attributs) gelöscht wurde, gibt er true zurück. Wenn delete kein Eigenschaftszugriffsausdruck ist, gibt delete auch true zurück.

o = {x:1};
delete o.x; //删除x,返回true。
delete o.x; //什么都没做(x已经不存在了),返回true
delete o.toString; //什么也没做(toString是继承来的),返回true
delete 1; //无意义,返回true

delete kann keine Eigenschaften löschen, deren Konfigurierbarkeit falsch ist (obwohl konfigurierbare Eigenschaften von nicht erweiterbaren Objekten gelöscht werden können). Einige Eigenschaften integrierter Objekte sind nicht konfigurierbar, beispielsweise die Eigenschaften globaler Objekte, die durch Variablendeklarationen und Funktionsdeklarationen erstellt wurden. Im strikten Modus führt das Löschen einer nicht konfigurierbaren Eigenschaft zu einem Typfehler. Im nicht-strikten Modus gibt der Löschoperator in diesen Fällen false zurück:

delete Object.prototype; //不能删除,属性是不可配置的
var x = 1;
delete this.x; //不能删除这个全局变量,
function f(){}
delete this.f; //同样也不能删除全局函数

Wenn Sie die konfigurierbaren Eigenschaften und Eigenschaften des globalen Objekts im nicht-strikten Modus löschen, können Sie den Verweis auf das globale Objekt weglassen und es direkt in löschen Auf den Operator folgt der Name des zu löschenden Attributs:

this.x = 1; //创建一个可配置的全局属性(没有用var)
delete x; //将它删除

Wenn jedoch im strikten Modus auf delete ein unzulässiger Operand (z. B. x) folgt, wird ein Syntaxfehler gemeldet, sodass das angegebene Objekt und Seine Attribute müssen angezeigt werden

Das obige ist der detaillierte Inhalt vonSo löschen Sie Objektattribute in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn