Hello guys. I guess to ask you something about the inheritance in
Prototype. I'm implementing a private-member pattern in my classes,
and it seems that's not working when using the inheritance in
Prototype 1.6.
Please, look at the example below:
var MySuperclass = Class.create(function() {
var privateMember = "foo";
var publicInterface = {
initialize : function(theValue) {
privateMember = theValue;
},
bar : function() {
alert(foo);
}
};
return publicInterface;
}());
In this approach the privateMember attribute is trapped into the
function scope and is not visible for the public object, but it's
visible inside the object. When I try to extend this class from
another one, the "private" attribute is replaced every time a new
instance is created. For example:
var MySubclass1 = Class.create(MySuperclass, function() {
var publicInterface = {
initialize : function($super, theValue) {
$super(theValue);
}
};
return publicInterface;
}());
var MySubclass2 = Class.create(MySuperclass, function() {
var publicInterface = {
initialize : function($super, theValue) {
$super(theValue);
}
};
return publicInterface;
}());
var obj1 = new MySubclass1("Hello");
var obj2 = new MySubclass2("World");
obj1.bar();
obj2.bar();
In any case, it'll display "World" instead "Hello", and the right way
should be to display "Hello" in the first case. I found a way to fix
this behavior but it's not applied to Prototype 1.6. The fixing
consists of giving an instance of the class instead the class
reference to the Class.create method. See below:
var MySubclass2 = Class.create(new MySuperclass(), function() {
var publicInterface = {
initialize : function($super, theValue) {
$super(theValue);
}
};
return publicInterface;
}());
Please, I need to know if there's any way in order to implement my
approach, since I have a lot of work done in this way.
Thank you beforehand,
Matías M.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---