Je viens de constater un comportement extrêmement étrange que je ne
comprend pas, je suis donc très preneur d'éclaircissement sur le
pourquoi du comment.
Le code actuel est aussi sans doute largement améliorable... je suis
aussi preneur de tous commentaires.
Soit donc :
- une initialisation de tableau d'objets, dont on a besoin par ailleurs
pour récupérer des données (pas faisable simplement en XHR dans le
contexte réél)
- une fonction qui porte le même nom (LblTutu) qu'une des propriétés de
l'objet dans le tableau
Regardez cette page (test case bien plus simple que la page originale) :
http://pgoiffon.free.fr/_temp/JS-with-prb_NOK.html
Des erreurs JS sont levées car la fonction LblTutu() n'est pas trouvée.
Et ici, déclaration du tableau sans utiliser with() :
http://pgoiffon.free.fr/_temp/JS-with-prb_OK.html
Pas de soucis.
Donc :
- pourquoi ces erreurs JS ?
- existe-t-il un meilleur moyen pour déclarer ce tableau ?
- existe-t-il un meilleur moyen pour déclarer ce tableau ?
Tab[0] = {Nomligne:'Alpha', LblTutu:'tutu'}; Tab[1] = {Nomligne:'Bravo', LblTutu:'tutu'}; etc.
Ca me parait très élégant ! Comment est-ce que l'on accédera aux valeurs ensuite ? Par Tab[0]['Nomligne'] ?
Tab[n].Nomligne Tab[n].tutu
devraient donner toutes satisfactions ;-)
-- sm
Pierre Goiffon
SAM wrote:
YD wrote:
function myObject(nomLigne, lbl){ this.NomLigne=nomLigne?nomLigne:""; this.LblTutu=lbl?lbl:""; }
Juste une petite question : je vois une casse différente entre les paramètres du constructeur et les propriétés de l'objet, est-ce juste pour un effort de clarté ?
toutafé
OK
En fait la création de classe en JS est un peu floue dans ma tête... Existe-t-il quelque part une documentation expliquant tout ça ? (je suppose que c'est un vaste sujet et ainsi il faudrait que je me documente mais en l'état je ne sais pas trop où)
De ce que je comprend on définit le constructeur et on peut ensuite rattacher des méthodes ? Il n'y a pas de méthode de déclaration en un seul endroit de la classe, propriétés et méthodes ?
SAM wrote:
YD wrote:
function myObject(nomLigne, lbl){
this.NomLigne=nomLigne?nomLigne:"";
this.LblTutu=lbl?lbl:"";
}
Juste une petite question : je vois une casse différente entre les
paramètres du constructeur et les propriétés de l'objet, est-ce juste
pour un effort de clarté ?
toutafé
OK
En fait la création de classe en JS est un peu floue dans ma tête...
Existe-t-il quelque part une documentation expliquant tout ça ? (je
suppose que c'est un vaste sujet et ainsi il faudrait que je me
documente mais en l'état je ne sais pas trop où)
De ce que je comprend on définit le constructeur et on peut ensuite
rattacher des méthodes ? Il n'y a pas de méthode de déclaration en un
seul endroit de la classe, propriétés et méthodes ?
function myObject(nomLigne, lbl){ this.NomLigne=nomLigne?nomLigne:""; this.LblTutu=lbl?lbl:""; }
Juste une petite question : je vois une casse différente entre les paramètres du constructeur et les propriétés de l'objet, est-ce juste pour un effort de clarté ?
toutafé
OK
En fait la création de classe en JS est un peu floue dans ma tête... Existe-t-il quelque part une documentation expliquant tout ça ? (je suppose que c'est un vaste sujet et ainsi il faudrait que je me documente mais en l'état je ne sais pas trop où)
De ce que je comprend on définit le constructeur et on peut ensuite rattacher des méthodes ? Il n'y a pas de méthode de déclaration en un seul endroit de la classe, propriétés et méthodes ?
YD
Existe-t-il quelque part une documentation expliquant tout ça ? (je suppose que c'est un vaste sujet et ainsi il faudrait que je me documente mais en l'état je ne sais pas trop où)
Pour commencer la doc Javascript de Mozilla me semble un excellent départ : http://developer.mozilla.org/fr/docs/JavaScript et puis la Faq de comp.lang.javascript...
De ce que je comprend on définit le constructeur et on peut ensuite rattacher des méthodes ? Il n'y a pas de méthode de déclaration en un seul endroit de la classe, propriétés et méthodes ?
Attention en JS il n'existe pas à proprement parler de méthodes, il n'existe que des propriétés qui peuvent être d'un type de données primitif (chaînes, nombres, booleéns...) ou des objets (Object et Array ainsi que les objets encapsulant les type de données primitifs String, Boolean, Number...).
Les méthodes en JS sont donc des propriétés de type Function. Elles peuvent être ajoutées à l'instance d'objet par le constructeur ou après. Il est parfois plus intéressant de les ajouter au prototype de la fonction (elles ne sont ainsi pas recopiées dans chaque instance qui garde cependant la possibilité de surcharger le prototype). Rattachées au prototype les fonctions deviennent en quelque sorte des méthodes de classe.
Ajout de "méthodes" par le constructeur :
function myObj(){ this.coucou = function(){alert("Coucou !");}
function ciao(){alert('Ciao!');} this.ciao=ciao; } var anInstance = new myObj(); anInstance.coucou(); anInstance.ciao();
-- Y.D.
Existe-t-il quelque part une documentation expliquant tout ça ? (je
suppose que c'est un vaste sujet et ainsi il faudrait que je me
documente mais en l'état je ne sais pas trop où)
Pour commencer la doc Javascript de Mozilla me semble un excellent départ :
http://developer.mozilla.org/fr/docs/JavaScript
et puis la Faq de comp.lang.javascript...
De ce que je comprend on définit le constructeur et on peut ensuite
rattacher des méthodes ? Il n'y a pas de méthode de déclaration en un
seul endroit de la classe, propriétés et méthodes ?
Attention en JS il n'existe pas à proprement parler de méthodes, il n'existe que
des propriétés qui peuvent être d'un type de données primitif (chaînes, nombres,
booleéns...) ou des objets (Object et Array ainsi que les objets encapsulant les
type de données primitifs String, Boolean, Number...).
Les méthodes en JS sont donc des propriétés de type Function. Elles peuvent être
ajoutées à l'instance d'objet par le constructeur ou après. Il est parfois plus
intéressant de les ajouter au prototype de la fonction (elles ne sont ainsi pas
recopiées dans chaque instance qui garde cependant la possibilité de surcharger
le prototype). Rattachées au prototype les fonctions deviennent en quelque sorte
des méthodes de classe.
Ajout de "méthodes" par le constructeur :
function myObj(){
this.coucou = function(){alert("Coucou !");}
function ciao(){alert('Ciao!');}
this.ciao=ciao;
}
var anInstance = new myObj();
anInstance.coucou();
anInstance.ciao();
Existe-t-il quelque part une documentation expliquant tout ça ? (je suppose que c'est un vaste sujet et ainsi il faudrait que je me documente mais en l'état je ne sais pas trop où)
Pour commencer la doc Javascript de Mozilla me semble un excellent départ : http://developer.mozilla.org/fr/docs/JavaScript et puis la Faq de comp.lang.javascript...
De ce que je comprend on définit le constructeur et on peut ensuite rattacher des méthodes ? Il n'y a pas de méthode de déclaration en un seul endroit de la classe, propriétés et méthodes ?
Attention en JS il n'existe pas à proprement parler de méthodes, il n'existe que des propriétés qui peuvent être d'un type de données primitif (chaînes, nombres, booleéns...) ou des objets (Object et Array ainsi que les objets encapsulant les type de données primitifs String, Boolean, Number...).
Les méthodes en JS sont donc des propriétés de type Function. Elles peuvent être ajoutées à l'instance d'objet par le constructeur ou après. Il est parfois plus intéressant de les ajouter au prototype de la fonction (elles ne sont ainsi pas recopiées dans chaque instance qui garde cependant la possibilité de surcharger le prototype). Rattachées au prototype les fonctions deviennent en quelque sorte des méthodes de classe.
Ajout de "méthodes" par le constructeur :
function myObj(){ this.coucou = function(){alert("Coucou !");}
function ciao(){alert('Ciao!');} this.ciao=ciao; } var anInstance = new myObj(); anInstance.coucou(); anInstance.ciao();
-- Y.D.
Pierre Goiffon
[à propos des classes en JS]
YD wrote:
Existe-t-il quelque part une documentation expliquant tout ça ?
Pour commencer la doc Javascript de Mozilla me semble un excellent départ : http://developer.mozilla.org/fr/docs/JavaScript et puis la Faq de comp.lang.javascript... (...)
Merci bcp YD pour les réponses ! Je m'en vais explorer tout ça !
Très cordialement, P. Goiffon
[à propos des classes en JS]
YD wrote:
Existe-t-il quelque part une documentation expliquant tout ça ?
Pour commencer la doc Javascript de Mozilla me semble un excellent départ :
http://developer.mozilla.org/fr/docs/JavaScript
et puis la Faq de comp.lang.javascript...
(...)
Merci bcp YD pour les réponses !
Je m'en vais explorer tout ça !
Existe-t-il quelque part une documentation expliquant tout ça ?
Pour commencer la doc Javascript de Mozilla me semble un excellent départ : http://developer.mozilla.org/fr/docs/JavaScript et puis la Faq de comp.lang.javascript... (...)
Merci bcp YD pour les réponses ! Je m'en vais explorer tout ça !