i tried Allen's sample in Firebug, and someVar is accessible from outside.
aWorker.someVar = "outside value"; console.info(aWorker.someVar); // "outside value" Also works when a new instance of the class is assigned: var x = new aWorker(); x.someVar = "outside value"; console.info(x.someVar); // "outside value" -joe t. On Sep 10, 2:45 pm, Ngan <nganp...@gmail.com> wrote: > Hi Allen, thank you so much for the reply. > > If I do it that way, someVar will now be a private variable. What if > I wanted someVar to be an instance variable. so that it may be > accessed externally: > > aWorker.someVar > > hence why I did: > > this.someVar = 'var'; > > Is this something that you have to give up when going with this > pattern? > > On Sep 10, 11:07 am, Allen <bla...@gmail.com> wrote: > > > Hi Ngan, > > > This should do what you want. > > > var Worker = Class.create((function() { > > var someVar; > > function initialize() { > > someVar = "var"; > > privateMethod(); > > } > > function publicMethod() { > > privateMethod(); > > } > > function privateMethod() { > > console.info(someVar); > > console.info(this) > > } > > return { > > initialize: initialize, > > publicMethod: publicMethod > > }; > > > })()); > > > On Sep 10, 1:10 pm, Ngan <nganp...@gmail.com> wrote: > > > > Hi, I apologize if this question has been asked before. I've tried > > > googling for this, but did find a good answer. > > > > What's the best way to have private methods using prototype's > > > Class.create? > > > > I've tried... > > > > var Worker = Class.create((function() { > > > function initialize() { > > > this.someVar = "var"; > > > privateMethod(); > > > } > > > > function publicMethod() { > > > privateMethod(); > > > } > > > > function privateMethod() { > > > console.info(this.someVar); > > > console.info(this) > > > } > > > > return { > > > initialize: initialize, > > > publicMethod: publicMethod > > > }; > > > > })()); > > > > Running this will give me: > > > aWorker = new Worker(); > > > # console.info(this.someVar) #=> undefined > > > # console.info(this.someVar) #=> DOMWindow > > > > However: > > > aWorker.publicMethod() #=> WORKS! > > > > Thank you for your time! > > --~--~---------~--~----~------------~-------~--~----~ 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 prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---