Gomez12 schreef op zaterdag 01 maart 2008 @ 20:40:
Wat ik zou doen is gewoon niets in je core veranderen, en een 2e library maken genaamd "html" of iets in die richting die je huidige library extend, en daar dan dus de functies in aanmaken...
Intern werk je met je collections, wil je je collections omzetten naar iets anders dan moet je even een extra library includen.
Op deze manier houd je je core library schoon, en als je straks animatie / ajax effecten wilt hebben kan je hier ook weer losse library's van maken. Zodat iemand niet in 1x 200kb JS moet inladen, maar zelf kan uitkiezen wat hij nodig heeft...
P.S. Let wel op met het onderhoud, dit wordt hierdoor wel enigszins bemoeilijkt als je core nog niet 99% vastligt. Want je moet op 2 plekken wijzigen dan.
Waarom volgens jou een externe library? In mijn ogen is het een redelijk belangrijke feature, aangezien je ook buiten de library om HTML nodes moet kunnen bewerken. Als je dan met de lib iets wil selecteren moet het bewerken van standaard properties wel mogelijk zijn.
P.P.S. nieuwsgierigheidsvraagje : Waarom een eigen JS lib maken, wat voldoet er niet aan de huidige? Kijk alleen voor intern gebruik kan ik het begrijpen...
Het is voor mij voornamelijk een leerproject. Misschien ga ik het nog gebruiken, maar dat weet ik niet. Heb tot nu toe al wel wat dingen gezien die ik andere bekende libraries niet naar mijn wens gedaan worden. Ik kijk nu voornamelijk naar jQuery en Prototype om te zien hoe ze daarbij dingen opgelost hebben, maar heb bij sommige dingen dus expres besloten het anders te doen.
Verwijderd schreef op zaterdag 01 maart 2008 @ 21:36:
FF een recap, dat ik t goed begrijp:
JavaScript:
1
2
3
| Collection.get(3,6); // returnt het 4e t/m 7e element in de collectie als een collectie
Collection.first() // returnt het 1e element als een collectie
Collection.last() // returnt het laatste element als een collectie |
Bingo!
first() en last() zouden wat mij betreft geen collection moeten returnen maar een enkel element, zoals Array.pop() en Array.shift() ook niet een array returnen.
get() zou je natuurlijk zo uit kunnen breiden dat het 2e argument optioneel is. Collection.get(4) returnt dan sec het 5e element (en dan niet in een collection). Collection.get(4,4) moet natuurlijk wel gewoon een collection returnen. Let er wel op dat je dit soort variabel gedrag goed documenteert!
Ik heb er zeker aan gedacht om first() en last() gewoon een element te laten retourneren, maar dan zit je er weer mee dat je dat element niet meer de methods van de library heeft, want het is geen Collection. Daarom had ik toch besloten er Collections van te maken. Jouw oplossing met de parameters is opzich wel leuk, maar dan zou ik misschien zelf een derde parameter laten opgeven om te forceren dat het geen Collection is. Minder handig, maar wel een helderdere oplossing, althans, zoals ik het nu zie

Als jullie daar iets op tegen hebben, dan hoor ik het graag

Verwijderd schreef op zaterdag 01 maart 2008 @ 21:41:
Collection.get ( first, last ) is gewoon een rare implementatie van een method voor een collection. In andere talen kun je ook geen "range" opgeven. Ik zou dan zeggen, maak een methode Collections.getRange ( first, last ), maar ook dat is raar. Een Collection heeft over het algemeen geen vaste volgorde. Maak er dan een ArrayList van, of een Vector.
De volgorde van de Collection is de volgorde van de elementen in de pagina. Niks randoms dus.
Ik heb er persoonlijk een bloedhekel aan als ik documentatie moet raadplegen om te zien wat dergelijke "standaard" classes en methods precies doen.
Kan ik me goed in vinden. Aan de andere kant... Wat is standaard? Elk systeem implementeert dingen ook op een eigen manier. Dat is waarom systemen verschillen van elkaar. Ik probeer nu een oplossing te vinden die zowel intuïtief/logisch is en die efficiënt/gemakkelijk werkt. En da's best lastig soms