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 () {
                document.observe("click", this.f);

Is there a cost to operating that way? I guess I won't be able to use

> 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