A friend is one who knows us, but loves us anyway.
Zoiets kan toch (beperkte js kennis hier)
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <script> function teller(){ if (!this.id){ this.id = 0; } alert(this.id); this.id++; } </script> <button onclick="teller()"> |
Blijkbaar niet zo beperkt, het lijkt me de oplossing.
Ik kende die toepassing van 'this' niet.
Nog steed benieuwd of groep globale variabelen,
zoals de 'settings' van een programma efficienter zijn in een array.
Ik kende die toepassing van 'this' niet.
Nog steed benieuwd of groep globale variabelen,
zoals de 'settings' van een programma efficienter zijn in een array.
A friend is one who knows us, but loves us anyway.
JavaScript=======Objecten
Maak dus geen settings in een array o.i.d. maar doe iets als:
Waarom? Je kan dan meerdere objecten op 1 pagina gebruiken, je hebt alles bij elkaar, nette code etcetera. Ik heb op een paar bugfixjes voor stomme browsers nooit globale variablen nodig. Het enige wat bij mij globaal aangemaakt wordt is de instantie van de objecten. Deze roep je echt nooit meer aan na de initiatlisatie!
Maak dus geen settings in een array o.i.d. maar doe iets als:
code:
1
2
3
4
| object fiets method setFietsType methode setFietsKwaliteit //etcetera |
Waarom? Je kan dan meerdere objecten op 1 pagina gebruiken, je hebt alles bij elkaar, nette code etcetera. Ik heb op een paar bugfixjes voor stomme browsers nooit globale variablen nodig. Het enige wat bij mij globaal aangemaakt wordt is de instantie van de objecten. Deze roep je echt nooit meer aan na de initiatlisatie!
Tja dat lijkt me wijs.
Ik zie het nog niet zo 123.
Ik begrijp de principes van oop wel,
maar zie van deze oplossing de code nog niet voor me.
Ik stel me voor dat elke setting dan bijv. een andere instantie is van de settings-class
Maar afijn ik kom er wel uit.
Ik moet mijn object georiënteerdheid sowieso opkrikken.
Ik zie het nog niet zo 123.
Ik begrijp de principes van oop wel,
maar zie van deze oplossing de code nog niet voor me.
Ik stel me voor dat elke setting dan bijv. een andere instantie is van de settings-class
Maar afijn ik kom er wel uit.
Ik moet mijn object georiënteerdheid sowieso opkrikken.
A friend is one who knows us, but loves us anyway.
Geef eens een concreet voorbeeld van wat je aan het maken bent. Dan zal ik je een opzetje geven zodat je een idee hebt.
Ik wil mijn code overzichtelijk houden en mijn interface eventueel multi-language maken.
Alle window.alert teksten, heb ik apart in een script met messages.
dus messagesNl.js
mesWelkom = "Welkom op de site bla bla bla heel verhaal dat ik niet in de functie wil"
dus messagesUk.js
mesWelkom = "Welcome on the sites site bla bla bla "
ergens anders heb ik bijvoorbeeld een functie die van alles doet, maar o.a. window.alert(mesWelkom)
eventueel met een language check, of ik laad dynamisch een andere messageCountryX.js
Nu heb ik al die messages als aparte globale variabelen.
Alle window.alert teksten, heb ik apart in een script met messages.
dus messagesNl.js
mesWelkom = "Welkom op de site bla bla bla heel verhaal dat ik niet in de functie wil"
dus messagesUk.js
mesWelkom = "Welcome on the sites site bla bla bla "
ergens anders heb ik bijvoorbeeld een functie die van alles doet, maar o.a. window.alert(mesWelkom)
eventueel met een language check, of ik laad dynamisch een andere messageCountryX.js
Nu heb ik al die messages als aparte globale variabelen.
A friend is one who knows us, but loves us anyway.
Beetje overkill voor je situatie maar maakt het wel duidelijk.
Maak een soort interface naar die messages toe:
Dan kan je dit implementeren als:
Als je dan een message wilt sturen aan de gebruiker doe je iets als:
Waarom is dit nou handig: Je kan nu bijvoorbeeld bepalen dat je zodra een taal niet beschikbaar is hier een error voor geven, of je kan bijvoorbeeld altijd dan de Engelse weergeven etcetera. Ook kan je nu bijvoorbeeld besluiten om in plaats van die standaard alerts een namaak alert te tonen bij browser die dit ondersteunen enzovoorts. Alles komt er op neer dat je nu heel flexibel kunt werken. Je kunt dit soort dingen nog veel verder uitwerken waardoor je schitterende mogelijkheden krijgt maar dat vereist nog wel wat oefening
Mooi topique: [rml][ purisme] prototypes / OO in JavaScript *[/rml]
Maak een soort interface naar die messages toe:
code:
1
2
3
4
5
6
7
8
9
10
| object Messages method addMessage (messageID, messageObject) method getMessage (messageID //eventueel: languageID) //eventueel method setDefaultLanguage object Message method setContent (content, languageID) method setType //zo kan je bijvoorbeeld alerts, confirms e.d. allemaal inbouwen methode getMessage (languageID) |
Dan kan je dit implementeren als:
code:
1
2
3
4
5
6
7
8
9
10
| //de enige globale var:
var messagesList=new Messages;
messagesList.setDefaultLanguage('EN');
//per message:
myMessage=new Message();
myMessage.setContent('hello', 'EN');
myMessage.setContent('hallo', 'NL');
myMessage.setType('alert'); //dit zou je weer verder uit kunnen werken maar lijkt me ultieme overkill
messagesList.addMessage(1, myMessage); |
Als je dan een message wilt sturen aan de gebruiker doe je iets als:
code:
1
| messagesList.getMessage(1); |
Waarom is dit nou handig: Je kan nu bijvoorbeeld bepalen dat je zodra een taal niet beschikbaar is hier een error voor geven, of je kan bijvoorbeeld altijd dan de Engelse weergeven etcetera. Ook kan je nu bijvoorbeeld besluiten om in plaats van die standaard alerts een namaak alert te tonen bij browser die dit ondersteunen enzovoorts. Alles komt er op neer dat je nu heel flexibel kunt werken. Je kunt dit soort dingen nog veel verder uitwerken waardoor je schitterende mogelijkheden krijgt maar dat vereist nog wel wat oefening
Mooi topique: [rml][ purisme] prototypes / OO in JavaScript *[/rml]
Ziet er mooi uit en is leerzaam voorbeeld.
Voor dit geval lijkt het me inderdaad overkill,
dan denk ik dat een messages array handiger is
messages(1) = "hallo beste mensen";
messages(2)= "zou u mijn site willen verlaten, hacker";
( twijfel hier nog over syntax (1) of [1] )
of mooier,
messagges['welkom'] = "hallo beste mensen";
messagges['oprotten'] = "zou u mijn site willen verlaten, hacker";
hoewel mischien lastig met aanhalingstekens alert(messagges['oprotten'])
Dank voor de uitleg
Voor dit geval lijkt het me inderdaad overkill,
dan denk ik dat een messages array handiger is
messages(1) = "hallo beste mensen";
messages(2)= "zou u mijn site willen verlaten, hacker";
( twijfel hier nog over syntax (1) of [1] )
of mooier,
messagges['welkom'] = "hallo beste mensen";
messagges['oprotten'] = "zou u mijn site willen verlaten, hacker";
hoewel mischien lastig met aanhalingstekens alert(messagges['oprotten'])
Dank voor de uitleg
A friend is one who knows us, but loves us anyway.
Maak dan op z'n minst een functie waarmee je de tekst ophaalt. Bijvoorbeeld iets simpels als:
Je kan dan bijvoorbeeld checken of het woord uberhaupt wel beschikbaar is.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
| var messages=new Array(); messages['welkom'] = "hallo beste mensen"; messages['oprotten'] = "zou u mijn site willen verlaten, hacker"; function showMessage(messageKey) { alert(messages[messageKey]); } function voorbeeld() { showMessage('welkom'); } window.onload=voorbeeld; |
Je kan dan bijvoorbeeld checken of het woord uberhaupt wel beschikbaar is.
Pagina: 1