kangax wrote:
> ...
>> If the node list returns 1 element then methods like $$
>> (...).getValue() should return the value of that element.
>> (this is how jQuery handles it)
>
> This could lead to ambiguity. We should probably discuss it more.
I agree that it is ambiguous.  I find the selector result object one of 
the most curious and confusing aspects of jQuery.  I like the 
functionality to deal with one element separate from the functionality 
to deal with multiple elements.  I like the concept of having methods 
like NodeListWrapper#addClassName() or NodeListWrapper#setAttribute(). 
Once you start trying to merge the functionality of $() and $$(), code 
becomes hard to follow. Furthermore, unless you use $$('#mydiv') instead 
of $('mydiv') there are few cases that it is safe to assume that the 
NodeListWrapper object contains only one item.

>> I think $A should return a ListWrapper, maybe ListWrapper could be the
>> $super for NodeListWrapper.
>> ListWrapper would have methods of Array Additions and Enumerable
>> methods.
>
> Definitely a possibility if we stop extending Array.prototype.
> Otherwise, I don't see much usefulness in this. NodeListWrapper
> encapsulates an array of `NodeWrapper`s and its methods operate
> directly on those `NodeWrapper`. A custom `_each` and mixed-in
> Enumerable would take care of iteration. Am I missing something?
>
> --
> kangax
I think he means that it appears that the Enumerable mix-in concept is 
necessitated the fact that native Array objects can't inherit from 
Enumerable.  Consider this hierarchy assuming we use a ListWrapper 
instead of Array.prototype:

Enumerable (each, collect, inject, invoke, etc.)
+--ListWrapper (Enumerable + first, last, reduce, reverse, etc.)
   +--NodeListWrapper (ListWrapper + addClassName, setAttribute, etc.)
   +--ObjectRange (ListWrapper + overrides)
   +--Ajax.Responders (ListWrapper + register, unregister, dispatch)
+--Hash (Enumerable + get, set, keys, toQueryString, etc.)


- Ken Snyder





--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to