PDA

View Full Version : different instances of class sharing the same variable


Peter_Chea
04-14-2004, 03:52 PM
Hi, I create two different instances of of class ItemsFilter. But somehow their instance variable "items" point to the same object. Anyone know how to fix this?
-Peter

<canvas width="749" height="707" debug="true">

<class name="ItemsFilter" extends="node">
<attribute name="items" value="new Object()"/>
<!--
<method event="oninit">
items = new Object();
</method>
-->
<method name="add" args="s">
items[s] = 1;
debug.write("add: " + s);
</method>


<method name="display">
var str = "";
for( var k in items)
{
str += k + ", "
}
debug.write(str);
</method>
</class>

<view>
<ItemsFilter name="filter1"/>
<ItemsFilter name="filter2"/>
<method event="oninit">

filter1.add("item1");
filter2.add("item2");

debug.write("filter1");
filter1.display();

debug.write("filter2");
filter2.display();
</method>
</view>
</canvas>

output:

filter1
item2, item1,
filter2
item2, item1,

correct output should be:
filter1
item1,
filter2
item2,

antun
04-14-2004, 04:01 PM
This works if you instantiate the object oninit:


<canvas width="749" height="707" debug="true">

<class name="ItemsFilter" extends="node">
<method event="oninit">
this.foo = new Object();
</method>
<method name="add" args="s">
this.foo[s] = 1;
debug.write("add: " + s);
</method>


<method name="display">
var str = "";
for( var k in this.foo)
{
str += k + ", ";
}
debug.write(str);
</method>
</class>

<view>
<ItemsFilter name="filter1"/>
<ItemsFilter name="filter2"/>
<method event="oninit">

filter1.add("item1");
filter2.add("item2");

debug.write("filter1");
filter1.display();

debug.write("filter2");
filter2.display();
</method>
</view>
</canvas>


-Antun

Peter_Chea
04-14-2004, 04:14 PM
thanks, it is working now. Somehow I try oninit before and thought it wasn't working.