5 dingen die je moet weten over de delete operator in JavaScript
In JavaScript, wordt de delete-operator gebruikt om een eigenschap van een object te verwijderen. Nadat de eigenschap is verwijderd, is deze niet meer toegankelijk en wordt undefined
geretourneerd.
De aanroeping van de operator delete
retourneert true
wanneer het een eigenschap verwijdert en false
anders. Het is alleen effectief op de eigenschappen van een object, het heeft geen effect op variabele of functienamen.
De delete operator moet niet worden gebruikt op voorgedefinieerde JavaScript objecteigenschappen zoals window
Math
, en Date
objecten. Het kan je applicatie laten crashen.
Laten we eens wat feiten over de delete
operator onder de loep nemen.
Eigenschappen van objecten verwijderen
De enige manier om de eigenschappen van een object volledig te verwijderen in JavaScript is door gebruik te maken van delete
operator.
Als u een variabele declareert zonder var, kan deze worden verwijderd. Laten we eens kijken naar het onderstaande voorbeeld.
De variabele die wordt gedeclareerd zonder het var
sleutelwoord, wordt intern opgeslagen als een eigenschap van het window
object. We kunnen dus de eigenschappen van het window
object verwijderen.
Kunnen we waarden uit een array verwijderen?
Omdat JavaScript arrays objecten zijn, kunnen elementen worden verwijderd met behulp van delete
.
delete
zal de object eigenschap verwijderen, maar zal de array niet opnieuw indexeren of de lengte ervan bijwerken. Hierdoor lijkt het alsof het undefined
is.
Het gebruik van delete
kan ongedefinieerde gaten in de array achterlaten. Gebruik in plaats daarvan pop()
shift()
, of splice()
.
Kunnen we ingebouwde objecten verwijderen?
Het verwijderen van ingebouwde objecten zoals splice()
Het verwijderen van ingebouwde objecten zoalsin objecten zoals Math
Date
, en window
objecten zijn onveilig, en ze kunnen je hele applicatie laten crashen.
Het verwijderen van niet-configureerbare eigenschappen
Object eigenschappen, naast een value
, heeft drie speciale attributen:
-
writable
– alstrue
, kan de waarde worden veranderd, anders, is het alleen-lezen. -
enumerable
– alstrue
, wordt het in lussen vermeld, anders niet vermeld. -
configurable
– alstrue
, de eigenschap kan worden verwijderd of de attributen kunnen worden gewijzigd, anders, kan het niet worden gewijzigd.
De waarden die zijn toegewezen met behulp van Object.defineProperty
en zijn ingesteld op configurable: false
in een object kunnen niet worden verwijderd.
In strikte modus, wordt er een fout weergegeven als u een niet-configureerbare eigenschap probeert te verwijderen.
Conclusie
delete
is de enige echte manier om de eigenschappen van een object te verwijderen zonder dat er restjes achterblijven, maar het werkt ~100 keer langzamer als je delete
in lussen gebruikt.
De alternatieve oplossing is het instellen van de waarde op un
gedefinieerd zoals object = undefined
. Het verwijdert de eigenschap niet volledig, maar zet de waarde op ongedefinieerd. De keuze is niet echt een prominente oplossing, maar als je er voorzichtig gebruik van maakt dan kun je de performance verbeteren.
Dat is alles! Ik hoop dat deze tekst helpt om de delete operator te doorgronden
Bedankt voor het lezen 🙂