constructor/destructor

U

Une Bévue

in a script (a simplified L-System) i do have objects constructing other
(children) objects by :
this.createChild=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).
 
J

Joost Diepenmaat

in a script (a simplified L-System) i do have objects constructing other
(children) objects by :
this.createChild=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.
 
U

Une Bévue

Joost Diepenmaat said:
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.restore(this);// returns action to the parent
this.index=this.rule.length-1;// go to the end of rule
break;

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

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

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,141
Messages
2,570,817
Members
47,367
Latest member
mahdiharooniir

Latest Threads

Top