Title: Message
I need a single boolean which would be "globally" accessible to all instances of a class.  Seems like the boolean should be in the class prototype, but I was troubled by the difficulty of setting the prototype boolean to true.  Maybe I'm missing something?
 
var MyObject = Class.create();
 
MyObject.prototype = {
 bSwitch: false,
 ... other methods and properties
}
 
var oMyOb1 = new MyObject();
var oMyOb2 = new MyObject();
alert(oMyOb1.bSwitch); // reports false
alert(oMyOb2.bSwitch); // reports false
 
Now set the value of bSwitch to true so all the oMyObN's will see a true value.
 
I can see the following methods...
 
// __proto__ works in Firefox/Safari but isn't available in IE...
oMyOb1.__proto__.bSwitch = true; 
alert(oMyOb1.bSwitch); // reports true
alert(oMyOb2.bSwitch); // reports true
 
// This changes bSwitch for a single instance.  Not in the prototype.
oMyOb1.bSwitch = true;
alert(oMyOb1.bSwitch); // reports true
alert(oMyOb2.bSwitch); // reports false, not what we want.
 
// Seems strange to me to reference the Class, but this works...
MyObject.prototype.bSwitch = true;
alert(oMyOb1.bSwitch); // reports true
alert(oMyOb2.bSwitch); // reports true
 
// It's a little more satisfying to create a method to hide this reference to the class...
MyObject.prototype = {
 bSwitch: false,
 setSwitch: function() {MyObject.prototype.bSwitch = true;}
}
// Now this works, and only requires a reference to a method on an instance
oMyOb1.setSwitch();
alert(oMyOb1.bSwitch); // reports true
alert(oMyOb2.bSwitch); // reports true
 
// I thought all objects had prototypes.  Why doesn't this work?
oMyOb1.prototype.bSwitch = true;  // error:  oMyOb1 is not a function
 
Is there another method that I've missed?  Did prototype.js extend __proto__ to work in IE?
 
Sam
 
_______________________________________________
Rails-spinoffs mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs

Reply via email to