Constructeurs et méthodes d'objets : duplication du code ou non ?
Hallo ragazo/ragaza,
J'ai quelques doutes quand à la possibilité de trouver une réponse claire à cette question, parce qu'évidement les navigateurs ne se comportent certainement pas tous de la même manière. Mais peut-être certaines personnes auront-elles aux moins des informations valables pour InternetExplorer.
La question :
Un « constructeur » peut attacher une « méthode » à un « objet » de deux manières (je met tout entre guillemet... parce que franchement qui oserait dire que JavaScript est un labgage orienté objet ?).
Sans ordre de préférences, les deux manières de faire sont les suivantes.
Code:
1 2 3 4 5 6 7 8 9
|
function Class ()
{
this.method = method;
function method ()
{
// The method code comes here
}
} |
Code:
1 2 3 4 5 6 7 8 9 10
|
function Class ()
{
this.method = Class_method;
}
function Class_method ()
{
// The method code comes here
} |
J'ai personnellement une préférence pour la première manière de faire (inutile d'en donner les raisons ici). Mais je me demande si elle présente oui ou non des risque de consomation de mémoire inutile. En clair : est-ce que le code de la méthode sera dupliqué autant de fois que d'objets seront créés ? Bien sûr, la méthode restera toujours attacher par référence : mais le navigateur va t-il à chaque fois donner une référence à une copie du code ou donnera t-il une référence à une seule instance du code ?
Pensez au cas où de nombreux « objets » sont créés ....
Cette question venant bien sûr dans le soucis d'économie de la mémoire ...
Award (récompense) : la reconnaissance de la communauté developpez.net à toutes personnes qui aurait des informations fiables sur ce délit de gaspillage potentiel.
P.S. Pas terrible la nouvelle manière d'afficher les section de code sur le forum : sur IE, la boite de code est deux fois plus large que le code lui-même... pas fameux :roll: C'était bien mieux comme c'était avant
Alors là c'est une bonne question
J'utilise très peu le prototypage. Mais j'utilise beaucoup cette façon là :
Code:
1 2 3 4 5 6 7 8 9
| function Class ()
{
this.method = Class_method;
}
function Class_method ()
{
// The method code comes here
} |
Je ne me suis pas encore très intéressé à cela. Si tu veux regarder comment je fait, je crois que la meilleur méthode c'est de récupérer ma fonctiothèques
içi
Je vais y regarder de plus près aussi car cela m'intéresse aussi. Ce n'est pas parce que c'est du côté client que l'on ne doit pas optimiser le fonctionnement.
trop de négations tue la négation ;)
J'ai trouvé quelque chose. Mais pour javascript.
http://developer.mozilla.org/fr/docs...Core:Fonctions
au paragraphe "Question de performance"
Je n'ai rien trouvé pour le JScript sur le site de msdn sur cette histoire de performance :(
Ouf! j'utilise la méthode la plus rapide. Ce n'est pas celle que tu utilises ;)
Sur ce coups là on est encore inversé... :mouarf:
ça vaux ce que ça vaux 2 (la revanche de firefox)
Après recherche (5 minutes) je suis tombé sur ça
après avoir fait les modifications la mémoire utilisé par firefox reste stable et ne gonfle plus à outrance.
Comme d'habitude tout est question de choix : http://standblog.org/blog/post/2006/...-info-ou-intox
Apparemment, c'est pour afficher plus rapidement les pages déjà chargées que la mémoire prend beaucoup de place... (bouton précédent et suivant)