2009-11-30 6 views
1

J'ai besoin de créer de nombreuses instances d'une classe spécifique dans une seule page, et je me demande si la façon dont je définis les méthodes de cette classe aura un impact sur les performances de la page. Est-ce important si je définir les méthodes comme celle-ci:Quelle est la meilleure façon d'instancier de nombreux objets JavaScript?

function Foo(h, l) { 
    this.h = h; 
    this.l = l; 
} 

Foo.prototype.bar = function(x) { 
    // do stuff 
} 

Ou ceci:

function Foo(h, l) { 
    this.h = h; 
    this.l = l; 

    this.bar = function(x) { 
    // do stuff 
    }; 
} 

Est-ce que l'on profite de la performance de l'offre sur l'autre si je dois créer de nombreux exemples de cette classe (et si la classe a plusieurs autres méthodes)? Ou y a-t-il une autre, meilleure façon que je devrais utiliser? Supposons que j'instancie tous les objets en utilisant new Foo(h,l);

Répondre

3

Le premier est beaucoup préféré. Dans ce cas, il n'y a qu'une seule définition de la fonction bar, et tous les objets la partagent. Dans le second cas, la fonction bar est déclarée à chaque fois, et chaque objet contient sa propre version.

1

Il est préférable d'utiliser la première méthode car la même propriété bar est partagée par toutes les instances Foo.

Questions connexes