Estou um pouco confuso com o deleteoperador 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 fooainda se refere a um objeto exatamente como obj. Eu estou supondo que este objeto é o mesmo objeto que fooapontou.
Isso me confunde, porque eu esperava que a escrita delete objexcluísse o objeto que objestava 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 objde uso de exclusão: delete obj.helloTextem seguida, verificarfoo now foo is an empty object
deletenã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.helloTexte você pode ver que fooagora aponta para um vazio objeto. "" "