Ich habe an der Aktualisierung von Code für die ES6-Syntax gearbeitet. Ich hatte die folgende Codezeile:Vorteile der ES6 Reflect-API
delete this._foo;
und meine Linter einen Vorschlag angehoben zu verwenden:
Reflect.deleteProperty(this, '_foo');
Sie die Dokumentation here für diese Methode finden können.
Der MDN docs Zustand:
Die Reflect.deleteProperty Methode ermöglicht es Ihnen, eine Eigenschaft auf ein Objekt zu löschen. Es gibt einen booleschen Wert zurück, der angibt, ob die Eigenschaft erfolgreich gelöscht wurde. Es ist fast identisch mit dem nicht strikten Löschoperator.
Ich verstehe, dass das Schlüsselwort delete
keinen Wert angibt, der Erfolg anzeigt, aber es ist viel weniger ausführlich.
Wenn ich nicht auf den Erfolg/Misserfolg von delete
angewiesen bin, gibt es einen Grund, Reflect.deleteProperty
zu bevorzugen? Was bedeutet es, dass delete
nicht streng ist?
ich wie viele der Anwendungsfälle für die Reflect
API fühlen, sind für Ausnahmefälle zu lösen und/oder besser bedingte Strömung Bereitstellung, aber auf Kosten einer viel ausführlicher Erklärung. Ich frage mich, ob es einen Vorteil gibt, die Reflect
API zu verwenden, wenn ich keine Probleme mit meinen aktuellen Verwendungen erfahre.
Ich würde nein sagen, es scheint keine anderen Vorteile zu geben, 'deleteProperty()' zu verwenden. Wenn Sie nicht wissen müssen, ob das Löschen erfolgreich war oder nicht, ist es einfach, 'delete' zu verwenden. – adeneo
'delete' wirft im strikten Modus, wenn die Eigenschaft eine eigene nicht-konfigurierbare Eigenschaft ist, ich rate' deleteProperty() 'wirft in solchen Fällen keinen Fehler – adeneo
Welcher Link schlägt das vor? – Bergi