IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Free d'un Object créé avec new


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Free d'un Object créé avec new
    Bonjour à tous,
    Venant du C et débutant en Javascript, je me demande comment faire un free d'un object créé avec new ?
    Si ce free n'est pas nécessaire quand est ce que l'objet est détruit ?
    Merci de vos lumières
    Domi

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par DomiPi
    Bonjour à tous,
    Venant du C et débutant en Javascript, je me demande comment faire un free d'un object créé avec new ?
    Si ce free n'est pas nécessaire quand est ce que l'objet est détruit ?
    Merci de vos lumières
    Domi
    Un free ? Qu'est-ce que tu entends par la ?

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    libérer la mémoire ?

    l'objet s'eteint avec la page ...

    sinon tu peux essayer avec removeChild ou = null

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    heummm... il me semble que j'ai déjà utilisé l'opérateur delete, mais je ne crois pas que celà fasse grand chose puisque comme tout language java, le garbage collector passe quand ça lui tente !
    Dsl de mon accent québecois

  5. #5
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    si le delete rend bien ton objet inaccessible, après est-ce que la mémoire est libérée ? avec un gc tu sais jamais lol
    (d'ailleurs y a pas beaucoup de doc là-dessus si kkun a des infos...)
    spacefrog< avec la page tu veux dire quoi par là ?

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    et puis avec new, l'objet n'est pas facilement compris comme propriété d'un constructeur, et du coup, la suppression est difficile;

    mais si tu déclares
    tu pourras "apparemment" le supprimer (mais pour l'espace libéré ou pas, aucune info)

  7. #7
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    delete est l'opposé de var.
    Ensuite son utilité est franchement douteuse...

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var myVar = new function () {};
    delete (myVar);
    c'est bien delete qui détruit ta variable. mais pas l'objet
    myVar est un nom de variable qui référence un objet (ici une fonction)
    Delete coupe cette référence et suprime la variable. l(objet lui sera récupéré par le garbage collector.

    en imaginant que tu ai passé la référence à une autre variable il ne faut pas que l'objet soit détruit donc seule la variable elle même est supprimées.

    il en vas de même avec une affectation lorsque tu fais ça maVar ne contient plus une référence à 'objet le lien est cassé donc l'objet est potentiellement supprimable par le gc qui ne le fera que lorsqu'il aura le temps ou le besoin

    tu ne peux explicitement détruire un objet. mais dès que toutes les référence sont perdue il est comme supprimé car innacessble le GC s'enchargera alors.

    le removeChild supprime la référence d'un élément du DOM à son fils. le fils n'est pas détruit. de la même façon si besoin le GC s'en chargera. et ce uniquement s'il n'existe plus aucune référence à l'objet.

    en les écritures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete(myVar);
    myVar=null;
    ne sont pas tout a fait équivalentes. les deux casse le lien avec l'objet référencé mais seule la premier détruit la variable.
    en clair après le delete myVar n'existe pas alors qu'apès le = null elle existe toujours mais vaut null

    A+JYT

Discussions similaires

  1. [debutant]Portée d'un objet et creation avec new
    Par harsh dans le forum Débuter
    Réponses: 7
    Dernier message: 17/05/2006, 17h21
  2. [Dev-Pascal] [1.9.2][Free Pascal] Problème de compilation avec Link.res
    Par Epotcirk dans le forum Autres IDE
    Réponses: 2
    Dernier message: 09/02/2006, 10h16
  3. [Object] Problèmes avec Assigned
    Par Clorish dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2005, 13h22
  4. Problème avec new
    Par Azharis dans le forum C++
    Réponses: 18
    Dernier message: 27/04/2005, 17h45
  5. Réponses: 5
    Dernier message: 22/04/2005, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo