2016-05-05 5 views
-1

Ich versuche, Eigenschaften in zwei nicht verwandten Objekten zu löschen. Gibt es einen Weg dies zu vermeiden?Löschen der Eigenschaft in zwei separaten Objekten ohne redundante Löschanweisungen

delete a.prop 
delete b.prop 

Ich habe versucht:

delete a.prop && b.prop 

und

delete a.prop,b.prop 

aber in beiden Fällen blieb b.prop intakt. Gibt es trotzdem eine Möglichkeit, diese redundanten Löschanweisungen zu umgehen (ohne dafür eine Funktion zu schreiben)? Warum funktioniert der Operator && nicht?

+0

Ja ... Dies ist, wie es funktionieren sollte .. was ist die Frage? – Rayon

+0

geklärt es nur – devdropper87

+0

Syntax für 'löschen Unternehmers wird' „Ausdruck löschen“ 'und _expression sollte auf eine Eigenschaft Referenz_ bewerten, so' a.prop löschen, b.prop' nicht, da dies helfen, ist keine gültige Syntax .. – Rayon

Antwort

3

Sie sind nicht redundant. Sie sind kurz und klar darüber, was sie tun. Der Operator delete löscht eine einzelne Eigenschaft - kein „kreativer“ Code du damit kommen bedeutet, dass Sie nur delete einmal zu schreiben, haben viel schlimmer am Ende aussehen, und viel länger als die 6 Zeichen von delete.

Warum funktioniert der Operator && nicht?

Da der delete Betreiber hat eine higher precedence als && und lässt einen einzigen Ausdruck, was bedeutet, dass:

delete a.prop && b.prop 

ist die gleiche wie

(delete a.prop) && b.prop 

IE die Lösch zuerst eintritt, mit das Ergebnis davon ist der erste Operand zu &&.

Analog zur Verwendung von , funktioniert die delete nur mit dem Ausdruck links vom Komma.

+0

_Operator precedence_ reference ist wirklich hilfreich ... Danke .. + 1;) – Rayon

0

Der Löschoperator akzeptiert nur eine Eigenschaft. Ihr Code ist nicht redundant.

+4

Bitte beachten Sie [Warum brauche ich 50 Ruf zu kommentieren? Was kann ich stattdessen tun?] (Http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can-i-do-instere) –

0

Ein pro Objekt löschen ist nicht redundant:

Der Operator delete entfernt eine Eigenschaft von einem Objekt.

Quelle: Mozilla MDN,Delete Operator

Sie können auch sehen, wie Operator löschen arbeitet Schritt für Schritt ECMAScript , 11.4.1 The delete Operator

+0

'ECMAScript' Verweis hat nicht gesagt, wie es funktioniert .. Können Sie klären? – Rayon

+0

Warum nicht, aus der ECMAScript-Referenz: "1.Ref soll das Ergebnis der Evaluierung von UnaryExpression sein. 2 ......." –

+0

Heißt das, _" funktioniert Schritt für Schritt "_? Ich bezweifle ... Klare wenn möglich .. Danke :) – Rayon

Verwandte Themen