Dit verhaal gaat over de manier van aanpak van het creeeren van een eigen objectboom dmv javascript.
Om even te beginnen bij beehive van Clay.
Clay's beehive is een objectgeorienteerd geheel, waarin dynamische objecten worden gecreerd die allerlei egenschappen bevatten die het gedrag ervan bepalen (width en height enzo) dit object is niet direct gekoppeld met de output die uiteindelijk op het scherm verschijnt. Om dit te realiseren is binnen het dynObject een layer property die een div bevat met bijbehorende troep (style enzo) dit object is dus het daadwerkelijke (DOM) object dat je op het scherm ziet (clay, verbeter me als het niet klopt)
Als je met deze dynobjecten een boom gaat maken door ze mbv een parent-child structuur aan elkaar te hangen, krijg je een beetje twee systemen naast elkaar. Je hebt enerzijds je eigen boom van objecten, en elk van deze objecten heeft een layer die onderling gekoppeld zijn om de DOM boom te vormen (een plaatje zou hier verhelderend zijn denk ik, maar daar heb ik de mogelijkheden effe niet voor)
Dit lijkt me niet altijd handig, wat ik liever zou zien is dat je zelfgecreeerde object in de DOM structuur gezet wordt. Hier heb ik wat mee zitten prutsen en dan loop ik tegen problemen aan.
Ipv nieuwe objecten aanmaken dmv een constructor gebeurt het nu dmv newDiv = document.createElement('div'); en vervolgens worden allerlei properties aan die div toegevoegd.
als ik methods aan dit object wil hangen gaat dit niet via het prototype, werkt dit niet, dit moet direct: newDiv.foo = eenFunctie;
probleem hier is dat we ook geen variabelen mee kunnen geven.
Ook mis je de inheritance die je dmv prototyping kan regelen
Liever zou ik zien dat ik volgens de standaard methode een object maak (dus met een constructor en dan alle methods via prototyping eraan hangen). En vervolgens dit hele object in de DOM tree hangen.
Ik wil dus graag een discussie opstarten over hoe men dit het beste zou kunnen aanpakken. Je kan er voor kiezen om twee min of meer gescheiden boomstructuren te bouwen, waarvan 1 dus een directe afspiegeling is van wat je op je scherm ziet (de DOM tree) en de andere een abstractere tree die je applicatie meer functioneel beschrijft (je eigen tree dus). Je zou bijvoorbeeld een object ChessBoard kunnen hebben, dat bestaat uit een hele berg div's en plaatjes.
Een probleem waar ik hier bijvoorbeeld weer tegenaan loop is de vraag hoe je een method van je abstracte object koppelt aan een event van je DOM object.
Om even te beginnen bij beehive van Clay.
Clay's beehive is een objectgeorienteerd geheel, waarin dynamische objecten worden gecreerd die allerlei egenschappen bevatten die het gedrag ervan bepalen (width en height enzo) dit object is niet direct gekoppeld met de output die uiteindelijk op het scherm verschijnt. Om dit te realiseren is binnen het dynObject een layer property die een div bevat met bijbehorende troep (style enzo) dit object is dus het daadwerkelijke (DOM) object dat je op het scherm ziet (clay, verbeter me als het niet klopt)
Als je met deze dynobjecten een boom gaat maken door ze mbv een parent-child structuur aan elkaar te hangen, krijg je een beetje twee systemen naast elkaar. Je hebt enerzijds je eigen boom van objecten, en elk van deze objecten heeft een layer die onderling gekoppeld zijn om de DOM boom te vormen (een plaatje zou hier verhelderend zijn denk ik, maar daar heb ik de mogelijkheden effe niet voor)
Dit lijkt me niet altijd handig, wat ik liever zou zien is dat je zelfgecreeerde object in de DOM structuur gezet wordt. Hier heb ik wat mee zitten prutsen en dan loop ik tegen problemen aan.
Ipv nieuwe objecten aanmaken dmv een constructor gebeurt het nu dmv newDiv = document.createElement('div'); en vervolgens worden allerlei properties aan die div toegevoegd.
als ik methods aan dit object wil hangen gaat dit niet via het prototype, werkt dit niet, dit moet direct: newDiv.foo = eenFunctie;
probleem hier is dat we ook geen variabelen mee kunnen geven.
Ook mis je de inheritance die je dmv prototyping kan regelen
Liever zou ik zien dat ik volgens de standaard methode een object maak (dus met een constructor en dan alle methods via prototyping eraan hangen). En vervolgens dit hele object in de DOM tree hangen.
Ik wil dus graag een discussie opstarten over hoe men dit het beste zou kunnen aanpakken. Je kan er voor kiezen om twee min of meer gescheiden boomstructuren te bouwen, waarvan 1 dus een directe afspiegeling is van wat je op je scherm ziet (de DOM tree) en de andere een abstractere tree die je applicatie meer functioneel beschrijft (je eigen tree dus). Je zou bijvoorbeeld een object ChessBoard kunnen hebben, dat bestaat uit een hele berg div's en plaatjes.
Een probleem waar ik hier bijvoorbeeld weer tegenaan loop is de vraag hoe je een method van je abstracte object koppelt aan een event van je DOM object.