Javascript werkt vaak nauw samen met HTML documenten. Denk hieraan als je in HTML een bepaald element een naam geeft, waarmee je het via een script wilt kunnen benaderen. Geef HTML elementen dus geen onverstandige namen als "submit", "parent" en "document". Ook zijn er in Javascript gereserveerde woorden die je in Javascript niet kunt gebruiken als namen van variabelen, functies, properties en methoden. Gebruik deze ook niet als namen voor HTML elementen, tenzij je precies weet wat je doet.
Eén reden voor deze restricties op naamgeving, is dat sommige browsers het toestaan om bijvoorbeeld HTML elementen direct bij hun naam aan te spreken. Doe dit nooit. Het is echter onmogelijk om die browsers te vertellen dat je helemaal niet wilt dat die HTML elementen een referentie naar een 'globaal' object met die naam krijgen. Daarom is het belangrijk om zelf nooit onverstandige namen te gebruiken.
Als je zelf ergens een naam aan geeft, of dat nu een HTML element is, of een Javascript variabele of functie, zorg dan dat de naam aan vrij algemene conventies voldoet. Namen van variabelen beginnen altijd met een letter of een underscore, eventueel gevolgd door één of meer letters, cijfers of underscores.
In Javascript is het ook toegestaan om het dollarteken te gebruiken in namen van variabelen. Dit is echter ongebruikelijk, en kun je beter ook niet doen als je bijvoorbeeld HTML pagina's met Javascript zou laten genereren door een PHP script. In CSS is het gebruik van een liggend streepje in de naam wél toegestaan.
Spreek HTML elementen altijd aan via de beschikbare arrays als forms, elements, links, anchors en options, of via DOM methoden. Dit is iets langer dan het direct gebruiken van de naam, maar het voorkomt problemen. Er is elke week wel een topic waarin de 'korte notatie' de oorzaak is van het probleem. PHP heeft bijvoorbeeld een specifieke wijze om waarden uit een HTML formulier in een array te krijgen. Hiertoe moeten de namen van de HTML formulier elementen eindigen met twee vierkante haakjes: []. Deze hebben echter ook een betekenis in Javascript. Het is toch mogelijk om deze haakjes te gebruiken in een naam, zie de voorbeelden hieronder:
Ik wil wel even duidelijk maken dat niet alles wat afgeraden wordt ook verboden of onmogelijk is. Met de 'lange notatie' kun je heel vreemde namen gebruiken, het zal in de meeste gevallen nog werken ook! Maar dat wil natuurlijk niet zeggen dat het ook verstandig is. Gebruik alleen dergelijke namen als dat nodig is, én als je weet wat je doet.
Het kan ook helpen om je aan bepaalde naming conventions te houden. Nu mag je uiteraard je eigen manier bedenken, maar ook dan geldt: wees consequent! Zorg dat je zelf precies weet wat iets betekent. Een voorbeeld van hoe ik het zelf over het algemeen doe:
Eén reden voor deze restricties op naamgeving, is dat sommige browsers het toestaan om bijvoorbeeld HTML elementen direct bij hun naam aan te spreken. Doe dit nooit. Het is echter onmogelijk om die browsers te vertellen dat je helemaal niet wilt dat die HTML elementen een referentie naar een 'globaal' object met die naam krijgen. Daarom is het belangrijk om zelf nooit onverstandige namen te gebruiken.
Als je zelf ergens een naam aan geeft, of dat nu een HTML element is, of een Javascript variabele of functie, zorg dan dat de naam aan vrij algemene conventies voldoet. Namen van variabelen beginnen altijd met een letter of een underscore, eventueel gevolgd door één of meer letters, cijfers of underscores.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
| // goed MyObject someFunction md5 CONSTANT_VALUE some_other_var _localVar // fout 1stVar my-function class |
In Javascript is het ook toegestaan om het dollarteken te gebruiken in namen van variabelen. Dit is echter ongebruikelijk, en kun je beter ook niet doen als je bijvoorbeeld HTML pagina's met Javascript zou laten genereren door een PHP script. In CSS is het gebruik van een liggend streepje in de naam wél toegestaan.
Spreek HTML elementen altijd aan via de beschikbare arrays als forms, elements, links, anchors en options, of via DOM methoden. Dit is iets langer dan het direct gebruiken van de naam, maar het voorkomt problemen. Er is elke week wel een topic waarin de 'korte notatie' de oorzaak is van het probleem. PHP heeft bijvoorbeeld een specifieke wijze om waarden uit een HTML formulier in een array te krijgen. Hiertoe moeten de namen van de HTML formulier elementen eindigen met twee vierkante haakjes: []. Deze hebben echter ook een betekenis in Javascript. Het is toch mogelijk om deze haakjes te gebruiken in een naam, zie de voorbeelden hieronder:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
| // goed document.forms['myForm'].elements['myTextField'].value = 'leeg'; parent.frames['menuFrame'].someFunction(13); document.getElementById('example').style.display = 'none'; document.links['myLink' + a].href = 'http://www.tweakers.net'; document.forms[0].elements['myFiles[' + 1 + ']'].disabled = true; // fout myForm.myTextField.value = 'leeg'; parent.menuFrame.someFunction(13); document.links.myLink+a.href = 'http://www.tweakers.net'; document.forms['myForm'].myTextField[].disabled = true; |
Ik wil wel even duidelijk maken dat niet alles wat afgeraden wordt ook verboden of onmogelijk is. Met de 'lange notatie' kun je heel vreemde namen gebruiken, het zal in de meeste gevallen nog werken ook! Maar dat wil natuurlijk niet zeggen dat het ook verstandig is. Gebruik alleen dergelijke namen als dat nodig is, én als je weet wat je doet.
Het kan ook helpen om je aan bepaalde naming conventions te houden. Nu mag je uiteraard je eigen manier bedenken, maar ook dan geldt: wees consequent! Zorg dat je zelf precies weet wat iets betekent. Een voorbeeld van hoe ik het zelf over het algemeen doe:
- Alle variabelen, properties, methoden, functies en instanties van objecten beginnen met een kleine letter. Als het een samengevoegde woorden zijn, dan krijgt ieder volgwoord een hoofdletter.
- Objects/Classes beginnen met een hoofdletter, verder gelijk aan bovenstaande regel.
- Constanten hebben alleen maar hoofdletters, bij samengevoegde woorden komt er een underscore als scheidingsteken tussen.
[ Voor 13% gewijzigd door Verwijderd op 24-04-2003 21:38 ]