First of all, I think I fully understand the implications of using 
Class.create to generate classes in Prototype together with how wrapping 
works and the use of the $super argument in methods that want to call the 
similarly -named method on the parent class's prototype.
Also, it's clear that the constructor of any class (in Prototype) just 
delegates the task of creating instance methods to the initialize prototype 
method by passing on any arguments it is getting at instantiation time.
So, if a class wants to use the instance- member- making capability of the 
parent class, the parent's initialize method is called through $super 
inside its initialize .

A very clear example of this is how Ajax.request uses Ajax.Base to make 
sure all the necessary arguments are set to a default, (and some are then 
normalized) if they are not taken in through the options hash.

 Ajax.Request = Class.create(Ajax.Base, {
  _complete: false,

  initialize: function($super, url, options) {
    $super(options);
    this.transport = Ajax.getTransport();
    this.request(url);
  },
... cut ...
});

This is how far things are clear for me.
------------------------------------------------------------------------------------------------------
Now, Element.Layout  inherits methods from Hash and in its initialize 
method  the parent Hash's initialize is called WITHOUT passing any 
arguments to it!

    initialize: function($super, element, preCompute) {
     * $super();*
      this.element = $(element);
      
......cut.....   
    } 

At the same time, Hash.initialize is waiting for an object as an only 
argument to store it on the instance, isn’t it? 

*var Hash = Class.create(Enumerable, (function() {*

*  function initialize(object) {*

*    this._object = Object.isHash(object) ? object.toObject() : 
Object.clone(object);*

*  }*

*..cut..*

*});* 

My question is: *How will the this._object ever be created on the 
Element.Layout instance?*


*
*

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/prototype-scriptaculous/-/YWFafIUnupgJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to