Sono un po 'confuso con l' delete
operatore JavaScript . Prendi il seguente codice:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Dopo che questo pezzo di codice è stato eseguito, obj
è null
, ma foo
fa ancora riferimento a un oggetto esattamente come obj
. Immagino che questo oggetto sia lo stesso oggetto che ha foo
indicato.
Questo mi confonde, perché mi aspettavo che la scrittura delete obj
cancellasse l'oggetto a cui obj
puntava in memoria, non solo la variabile obj
.
Questo perché Garbage Collector di JavaScript funziona su una base di mantenimento / rilascio, in modo che se non avessi altre variabili che puntano all'oggetto, verrebbe rimosso dalla memoria?
(A proposito, i miei test sono stati eseguiti in Safari 4.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
oggetto non viene cancellato controlla obj
elimina utilizzo: delete obj.helloText
e poi controllafoo now foo is an empty object
delete
non serve per eliminare oggetti in javascript. delete
Viene usato per rimuovere una chiave oggetto. Nel tuo caso var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
, l'oggetto non viene cancellato. Check obj
. Quindi, esegui delete obj.helloText
e puoi vedere che foo
ora punta a un vuoto "" "