|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
Bonjour,
J'ai un problème pour charger un objet en javascript. Ma démarche n'est probablement pas du tout la bonne à cause de mes réflexes de langages de classes. J'ai une "classe" Document : Code :
Code :
Du coup, est-ce qu'il faut déclarer les méthodes autrement, de façon à ce qu'il les conserve? Ou bien est-ce que je dois écrire Code :
getCurrentDocument = function() {return new Document(JSON.parse(...));} j'ai besoin de déclarer deux constructeurs : Document = function() {...}, et aussi Document = function(doc) {...} afin de charger mon document comme décrit précédemment. Mon problème, c'est comment faire ça en javscript ? Encore une fois, je suis conscient que ma logique n'est pas la bonne. N'hésitez pas à m'ouvrir l'esprit |
||||
|
|
00
|
|
|
#2 | ||
Sylvain Poitiers Inscription : mai 2008 Messages : 229 ![]() |
Bonjour,
Pourquoi n'essaies tu pas de charger tes objets avec jQuery ? C'est plus simple il me semble. Exemple d'un code à moi : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
Merci, mais $.getJSON demande une url sauf erreur. Alors pour accéder au localStorage du navigateur, je sais pas trop quoi mettre...
Mais peut-être que JQuery peut effectivement apporter une réponse plus simple à ma question. |
|
|
00
|
|
|
#4 |
Sylvain Poitiers Inscription : mai 2008 Messages : 229 ![]() |
Sinon tu peux toujours créer un serveur en local et cela marchera normalement.
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
oO ?!
Tu veux que je crée un server local côté client en javascript juste pour pouvoir utiliser .$getJSON au lieu de JSON.parse(localStorage.getItem(...)) ? C'est pas un peu tordu comme solution ? Ou alors j'ai pas du tout compris ce que tu voulais dire par "créer un serveur en local" |
|
|
00
|
|
|
#6 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
Et utiliser jQuery (ou tout autre framework) comme rustine aux lacunes que l'on a en JavaScript est rarement la bonne utilisation ![]() @Sharcoux : il faudrait que tu nous montres plus de code : comment sont créées tes méthodes et tes propriétés et comment tu les appelles. Ceci dit, appeler un paramètre document est suicidaire, comment veux-tu que JavaScript distingue ton paramètre de l'objet window.document (puisque window est implicite) ?
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#7 |
Sylvain Poitiers Inscription : mai 2008 Messages : 229 ![]() |
Ben oui c'est un peu tordu comme solution j'avoue lol mais cela fonctionne normalement.
Avec FF sur mais avec Chrome je sais plus :s |
|
|
00
|
|
|
#8 | |
Sylvain Poitiers Inscription : mai 2008 Messages : 229 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 | |||
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
Citation:
Bon d'accord, en fait il s'appelait doc, et j'ai dû le renommer à cause de conventions de nommage. Mais maintenant que tu le dis, document était peut-être pas l'idée la plus géniale que je puisse trouver pour le nouveau nom ![]() Bon, par contre, pour mon problème, voilà la classe document : Code :
|
|||
|
|
00
|
|
|
#10 | ||||
|
Membre régulier
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Attention a la manière dont tu prototype tes objets. Normalement la propriété prototype permet d’ajouter des méthodes ou attributs aux instances déjà créer de l’objet.
par exemple : Code :
Code :
|
||||
|
|
01
|
|
|
#11 | ||
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
Hum... Je suis pas convaincu :
Code :
|
||
|
|
01
|
|
|
#12 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
.. et pour ma question initiale ?
|
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
La seule chose que je vois, c'est dans le constructeur, si par exemple dans
currentTime() est dans le prototype, alors il faut appeler Code :
this.lastModification=this.currentTime();
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#15 | ||
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
currentTime est une fonction globale. Elle n'est pas dans prototype.
Bon, je récapitule les pistes que j'ai proposé : - ajouter à Document un deuxième constructeur. On aurait : Document = function() {..} et Document = function(objet_JSON) {...} Mais je ne sais pas faire - ajouter le prototype de Document aux méthodes de mon objet JSON. Un truc du type Code :
- utiliser autre chose que prototype pour déclarer les méthodes de Document Si vous voyez un bout de solution pour l'une de ces pistes, votre intervention est la bienvenue. Merci |
||
|
|
00
|
|
|
#16 | ||
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
Bon, j'ai fini par trouver :
Code :
doc.DisplayTitle() affiche bien "Document B" |
||
|
|
00
|
|
|
#17 | ||||||
|
Membre régulier
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Voila comment moi, je procéderais !
Touts d’abord je prototype les objets pour y ajouter une méthode Merge, comme ceci : Code :
Code :
Code :
En javascript il n’est pas obligatoire de déclarer les arguments, l’accès aux arguments passé a la fonction est disponible par le tableau arguments … |
||||||
|
|
00
|
|
|
#18 | |
|
Membre régulier
![]() Inscription : octobre 2010 Messages : 65 ![]() |
Citation:
Personnellement je me sert du prototypage uniquement sur les objets dont je n’ai pas la possibilité de modifier leur déclarations par example les type de base ( Function, Object, Array) ou un élément du DOM .je m’en passe totalement lors de la déclaration de mes objets. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com