constructor/destructor

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • =?ISO-8859-1?Q?Une_B=E9v?==?ISO-8859-1?Q?ue?=

    constructor/destructor


    in a script (a simplified L-System) i do have objects constructing other
    (children) objects by :
    this.createChil d=function(){
    return new Ant(...);
    }

    all of the children finished their job before the parent one then, i
    wonder how to destroy (nullify?) those no more usefull objects.

    saying 'o' is one of this new object i want to "destroy" it, is it
    siffuciant to do :

    o=null;

    ???

    even, is it usefull (freeing memory?)

    notice, by construction all of the children of a given parent, finished
    them job before the parent (the destruction could only be done from the
    parent, from where the child is named-identified).
    --
    Une Bévue
  • Joost Diepenmaat

    #2
    Re: constructor/destructor

    unbewusst.sein@ weltanschauung. com.invalid (Une Bévue) writes:
    in a script (a simplified L-System) i do have objects constructing other
    (children) objects by :
    this.createChil d=function(){
    return new Ant(...);
    }
    >
    all of the children finished their job before the parent one then, i
    wonder how to destroy (nullify?) those no more usefull objects.
    >
    saying 'o' is one of this new object i want to "destroy" it, is it
    siffuciant to do :
    >
    o=null;
    >
    ???
    Depends on how you define "sufficient ". The emacscript spec does not
    define any garbabage collection mechanism, but its pretty obvious that
    any sane and efficient mechanism will only collect unreachable
    objects. IOW, you need to "clear out" any references to objects you
    want to clean up, either by explicitely assigning them some other
    value (as you do here), or by letting the references go out out scope.
    even, is it usefull (freeing memory?)
    Depends on the implementation. In most browsers, it is, more or
    less. But you probably shouldn't rely on the memory being freed
    quickly unless you exit the page you're on and/or are running out of
    memory.
    notice, by construction all of the children of a given parent, finished
    them job before the parent (the destruction could only be done from the
    parent, from where the child is named-identified).
    I don't understand what you mean. note that as I stated above there is
    no portable way to enforce destruction at all. you can only make
    object *eligible* for destruction/collection; you can't destruct or
    collect them "manually". the key to making object eligible for
    deletion is to make them unreachable.

    --
    Joost Diepenmaat | blog: http://joost.zeekat.nl/ | work: http://zeekat.nl/

    Comment

    • =?ISO-8859-1?Q?Une_B=E9v?==?ISO-8859-1?Q?ue?=

      #3
      Re: constructor/destructor

      Joost Diepenmaat <joost@zeekat.n lwrote:
      the key to making object eligible for
      deletion is to make them unreachable.
      OK, thanks, that's clear enough to me.
      --
      Une Bévue

      Comment

      • =?ISO-8859-1?Q?Une_B=E9v?==?ISO-8859-1?Q?ue?=

        #4
        Re: constructor/destructor

        Joost Diepenmaat <joost@zeekat.n lwrote:
        IOW, you need to "clear out" any references to objects you
        want to clean up, either by explicitely assigning them some other
        value (as you do here), or by letting the references go out out scope.
        in fact, after your answer, i've tried tu nullify the reference to the
        object instance, without any effect, by doing simply :

        a_child=null;// from parent

        my object is a tree, where i create branches, when a branch (another
        instance of a tree) is finished to display (the objects are drawing
        lines over a canvas), i want to destroy it.

        the script reads a rule (a string) like that :
        "F+[-F...]+F..."

        when a parent reads a "[" symbol it creates a child which reads the
        (sub)rule to it's closing "]", it is there i want to destroy the child.

        for the time being the only way i've found to stop the child is to
        advance it's index to the end of the rule.

        line 126 :
        case ']':
        this.parent.res tore(this);// returns action to the parent
        this.index=this .rule.length-1;// go to the end of rule
        break;

        line 71 :
        this.restore=fu nction(child){
        this.penUp();
        ctx.moveTo(this .x,this.y);
        this.penDown();
        this.index=chil d.index+1;// continue action where the child left it
        this.actRule(th is.rule);
        return this;
        };

        my testing code is at the page
        <http://thoraval.yvon.f ree.fr/Canvas/l_system.xhtml>


        --
        Une Bévue

        Comment

        Working...