|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
[JS/jQuery] Eliminare definitivamente un array
Ciao!
Come da titolo, ho la necessità di eliminare un array ( che poi è un array di oggetti ) ed ogni suo riferimento, perchè poi devo ririempirlo con roba nuova. Questo è quanto ho provato: Codice:
$("button[id^='download']").click(function(Elem){
res=$(this).parent().siblings().eq(0).children('a.chapterLink').attr('href').split('/');
link=Elem.currentTarget.baseURI+res[3]+'/';
if(typeof chapter == 'object')
delete window.chapter;
chapter=[];
console.log("Chapter length: "+chapter.length);
fetchSingleChapter(link,1,1); // Sends 1: link, 2: it's the first page! 3: page num
$(document).ajaxStop(function(){
console.dir(chapter);
});
});
Ho anche provato a impostare la lunghezza a 0. Niente.. Soluzioni?
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Up
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
A parte che non vedo il bisogno di inzozzare il global object, ma... quale problema riscontri? Assegnargli un nuovo valore dovrebbe andare più che bene. Ti ho fatto un piccolo test case a dimostrazione: http://codepen.io/anon/pen/bguBL
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Ciao,
Penso che il tuo codice funzioni come sperato perchè tu carichi interi dentro. Quello che faccio io invece è caricare oggetti ( nel caso, immagini create con new Image() ) nell'array. Di conseguenza, per come funziona js, non viene caricato l'oggeto, ma il riferimento all'oggetto. Inoltre ( mi sono documentato un po', anche se non conosco molto bene l'argomento ) a causa del garbage collector di JS, anche azzerando l'array che contiene gli oggetti, i riferimenti non vengono veramente cancellati perchè "potrebbero" servire ancora ( e non vengono eliminati dal garbage collector ). Fatto sta che speravo che ci fosse un modo per "ingannare" questo funzionamento e cancellare l'array anche se ha ancora riferimenti ad indirizzi di oggetti "possibilmente" validi ( a me in realta quegli oggetti non servono più una volta che ricarico l'array.. Ma JS non lo sa/capisce ). EDIT: Comunque ora ho abbandonato il progetto perchè richiedeva uno sbattimento eccessivo e veramente 0 documentazione e supporto per certe librerie che utilizzavo. Ciò nonostante, vorrei approfondire l'argomento perchè può sempre tornare utile.
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ho usato dei Number perché non mi era chiaro quale fosse il tuo problema (sovrascrivere l'array o eliminare fisicamente i suoi contenuti).
Non mi è chiaro perché dovresti volere l'eliminazione fisica dei suoi contenuti, anziché lasciare che il garbage collector lo faccia quando preferisce. Non mi risulta esista un modo di forzare la garbage collection, per cui dovresti evitare di dipendere da questo assunto. In teoria, comunque, ogni oggetto inutilizzato (ovvero, verso il quale non c'è nessun riferimento attivo) viene eliminato dal garbage collector alla sua prossima esecuzione.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Ma si infatti per fare quello che poi volevo fare, ho studiato un'altra implementazione, tralasciando di fatto questa storia del ricaricare l'array...
Ma l'esecuzione del garbage collector da cosa dipende?
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:20.



















