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 () {


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 
For more options, visit this group at 

Reply via email to