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
-~----------~----~----~----~------~----~------~--~---

Reply via email to