On Mar 10, 10:27 am, Rob Tsuk <robt...@gmail.com> wrote: [...] > One example is the bind() method on Function. Mojo requires application > developers to create a certain number of objects whose methods are likely to > be used as callbacks, and bind() is invaluable for establishing the "this' > keyword in those cases. It would not improve matters at all to have to call > Prototype.Function.bind(this.handleRequest, this) rather than > this.handleRequest.bind(this).
You don't have to call it like that : ) Properties can be aliased to local variables in closures. Local variables are cheap and closures are flexible. Does this really look/feel so bad? var Widget = Class.create((function(){ var bind = Prototype.lang.bind; return { initialize: function(id) { this.element = $(id); this.init(); }, init: function() this.element.observe('click', bind(this.onClick, this)); }, onClick: function(){ // ... } } })()); I understand the ubiquity of `bind` and desire to access it directly on a function (which is why ES3.1 introduces native `bind`), but if we are talking about general use on the web (i.e. maximum compatibility), I don't see how the alternative approach makes code any less clear or any less pleasant to use. The only downside I see is that you have another variable (local to your "class") to watch out for. > > Even if there were an option to run Prototype in a namespace and have it not > extend native prototypes, I doubt we would enable it for Mojo. If we did, That's the beauty of developing for a controlled environment (please correct me if I'm wrong) > we'd have to make all the code in the framework avoid depending on the > prototypes and use the namespaces, and I don't the what that would do to > code clarity in the framework would be worth the theoretical compatibility. I think it's a myth that code clarity is being lost when moving from oo approach to a more functional one. You only need to change the way you approach things. It's good to remember that not relying on augmenting *native prototypes* still allows to take advantage of expressive prototypal nature of Javascript. -- kangax --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en -~----------~----~----~----~------~----~------~--~---