By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,567 Members | 1,592 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,567 IT Pros & Developers. It's quick & easy.

constructor/destructor

P: n/a

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).
--
Une Bévue
Jun 27 '08 #1
Share this Question
Share on Google+
3 Replies


P: n/a
un************@weltanschauung.com.invalid (Une Bévue) writes:
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.

--
Joost Diepenmaat | blog: http://joost.zeekat.nl/ | work: http://zeekat.nl/
Jun 27 '08 #2

P: n/a
Joost Diepenmaat <jo***@zeekat.nlwrote:
the key to making object eligible for
deletion is to make them unreachable.
OK, thanks, that's clear enough to me.
--
Une Bévue
Jun 27 '08 #3

P: n/a
Joost Diepenmaat <jo***@zeekat.nlwrote:
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>
--
Une Bévue
Jun 27 '08 #4

This discussion thread is closed

Replies have been disabled for this discussion.