Pracuję nad uaktualnieniem kodu do użycia składni ES6. Miałem następujący wiersz kodu:Zalety interfejsu ES6 Reflect API
delete this._foo;
i mój linter podniesiony sugestię użycia:
Reflect.deleteProperty(this, '_foo');
można znaleźć w dokumentacji tej metody here.
MDN Docs stan:
Sposób Reflect.deleteProperty pozwala usunąć właściwość na obiektu. Zwraca wartość logiczną wskazującą, czy właściwość została pomyślnie usunięta. Jest prawie identyczny z nieostrym operatorem usuwania .
Rozumiem, że słowo kluczowe delete
nie zwraca wartości wskazującej na sukces, ale jest znacznie mniej szczegółowe.
Jeśli nie jestem zależny od sukcesu/niepowodzenia delete
czy jest jakiś powód, aby faworyzować Reflect.deleteProperty
? Co to znaczy, że delete
nie jest restrykcyjna?
Czuję, że wiele przypadków użycia dla interfejsu API Reflect
służy do rozwiązywania wyjątkowych przypadków i/lub zapewniania lepszego przepływu warunkowego, ale kosztem znacznie bardziej szczegółowego stwierdzenia. Zastanawiam się, czy istnieje jakaś korzyść z używania interfejsu API Reflect
, jeśli nie mam żadnych problemów z bieżącymi zastosowaniami.
Powiedziałbym, że nie, nie ma żadnych innych korzyści z używania 'deleteProperty()'. Jeśli nie musisz wiedzieć, czy usunięcie nie powiodło się, po prostu użyj 'delete' jest w porządku. – adeneo
'delete' wyrzuca w trybie ścisłym, jeśli właściwość jest własną, nie konfigurowalną właściwością, zgaduję, że' deleteProperty() 'nie generuje błędu w takich przypadkach. – adeneo
Co sugeruje to liner? – Bergi