In an effort to keep the code clean I'd delegate this functionality to
a dedicated method other than the constructor.



On Aug 4, 2:16 pm, Matt Foster <mattfoste...@gmail.com> wrote:
> If you really wanted to avoid bind you could just use closures within
> the initialize method
>
> var Sub4 = Class.create(Super4, {
>         baz: "bat",
>         initialize: function () {
>                 var self = this;
>                 var f = function () {
>                     alert("Class:"+self.fu+self.baz);
>                 };
>                 document.observe("click",f);
>         }
>
> });
>
> On Aug 4, 3:35 am, Cédric <bertolini.ced...@gmail.com> wrote:
>
> > On 3 août, 22:38, Matt Foster <mattfoste...@gmail.com> wrote:
>
> > > Regardless of the JS framework.  A closure is necessary for attaching
> > > class methods to a particular instance and preserve the instance
> > > reference via the "this" keyword.
>
> > This is automatic with the regular "Constructor" syntax. Defining a
> > function as an object method inside a constructor creates a closure,
> > so we can use #bind at the same time as the definition.
>
> > The point is, Class.create acts like a prototype more than as a
> > constructor. I never really thought of that. So I can't bind to my
> > object instance inside Class.create. And I guess that what acts as a
> > constructor in Class is the initialize method... So, maybe, I should
> > define f inside initialize, something like:
>
> > var Sub4 = Class.create(Super4, {
> >         baz: "bat",
> >         initialize: function () {
> >                 this.f = function () {
> >                     alert("Class:"+this.fu+this.baz);
> >                 }.bind(this);
> >                 document.observe("click", this.f);
> >         }
>
> > });
>
> > Is there a cost to operating that way? I guess I won't be able to use
> > Class.addMethods...
>
> > > I thought Function.bind was pretty clean myself, but I guess you've
> > > got the sweet tooth for the syntax.
>
> > I think #bind is awesome :) It's the "bind the function in the
> > initializer" that bothers me, when I compare it to the standard syntax
> > "bind the function at its definition".
--~--~---------~--~----~------------~-------~--~----~
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