2011-02-23 8 views
6
var a = { 
    "example" : true 
}; 

var x = [a], y = [a]; 

delete x[0]; 

console.log(y); 

En el código anterior, ¿sería posible eliminar una, no solo la referencia en x?¿Es posible eliminar el objeto en sí, no la referencia

+0

¿Qué pasa con "eliminar una;" ? – Krumelur

+0

Desea des-referenciar el objeto 'a' –

+1

Si desea la administración manual de la memoria, olvídela. El objeto se elimina cuando el GC lo ve y cuando puede demostrar que no hay más referencias, ni un segundo antes. – delnan

Respuesta

10

que es hasta el recolector de basura. Siempre que haya alguna referencia al objeto, no será basura recolectada.

Si desea que se limpie, asegúrese de que no haya más referencias.

Para responder a su pregunta, no, no hay forma de destruir explícitamente un objeto. Si a y y[0] todavía lo están haciendo referencia, no puede hacerlo desde su variable x.

Para ser claros, x[0] no hace referencia a a. Está apuntando al mismo objeto en la memoria al que hace referencia el a.

+0

Entonces, no hay forma de eliminar a y de, sin conocer el índice? – glider

+1

@glider: además de eliminar la referenciación de todos los elementos en la matriz 'y', o iterar sobre la matriz para buscarla (o usar' .indexOf() 'si es compatible), entonces realmente no. – user113716

+0

Gracias, eso es todo lo que quería saber. – glider

Cuestiones relacionadas