Estoy un poco confundido con el delete
operador de JavaScript . Tome el siguiente código:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Después de que este fragmento de código se haya ejecutado, obj
es null
, pero foo
aún se refiere a un objeto exactamente igual obj
. Supongo que este objeto es el mismo objeto que foo
señaló.
Esto me confunde, porque esperaba que la escritura delete obj
eliminara el objeto que obj
apuntaba en la memoria, no solo la variable obj
.
Se debe esto a la basura de JavaScript Collector está trabajando en una base retener / liberación, por lo que si no tuviera ninguna otra variable que apunta al objeto, que podría ser eliminado de la memoria?
(Por cierto, mi prueba se realizó en Safari 4.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
objeto no se elimina verificar obj
eliminar el uso: delete obj.helloText
y luego verificarfoo now foo is an empty object
delete
no es para eliminar objetos en javascript. delete
Se utiliza para eliminar una clave de objeto. En su caso var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
, el objeto no se elimina. Compruebe obj
. A continuación, ejecute delete obj.helloText
y puede ver que foo
ahora apunta a un vacío objeto. "" "