Estou um pouco confuso com o delete
operador do JavaScript . Pegue o seguinte pedaço de código:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Após a execução desse trecho de código, obj
é null
, mas foo
ainda se refere a um objeto exatamente como obj
. Eu estou supondo que este objeto é o mesmo objeto que foo
apontou.
Isso me confunde, porque eu esperava que a escrita delete obj
excluísse o objeto que obj
estava apontando na memória - não apenas a variável obj
.
Isso ocorre porque o Garbage Collector do JavaScript está trabalhando com retenção / liberação, para que, se eu não tivesse outras variáveis apontando para o objeto, ele seria removido da memória?
(A propósito, meus testes foram feitos no Safari 4.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
objeto não é excluído de verificação obj
de uso de exclusão: delete obj.helloText
em seguida, verificarfoo now foo is an empty object
delete
não é para excluir objetos em javascript. delete
É usado para remover uma chave de objeto. No seu caso var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
, o objeto não é excluído. Verifique obj
. Em seguida, execute delete obj.helloText
e você pode ver que foo
agora aponta para um vazio objeto. "" "