Sono un po 'confuso con l' deleteoperatore 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 foofa ancora riferimento a un oggetto esattamente come obj. Immagino che questo oggetto sia lo stesso oggetto che ha fooindicato.
Questo mi confonde, perché mi aspettavo che la scrittura delete objcancellasse l'oggetto a cui objpuntava 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 objelimina utilizzo: delete obj.helloTexte poi controllafoo now foo is an empty object
deletenon serve per eliminare oggetti in javascript. deleteViene 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.helloTexte puoi vedere che fooora punta a un vuoto "" "