Création d'objets en JavaScript : new Object() vs. Object Literal Notation
La pratique de création d'objets en JavaScript peut impliquer deux approches courantes : la syntaxe basée sur le constructeur utilisant new Object() et la notation littérale d'objet. Bien que les deux méthodes semblent donner des résultats similaires, il y a une distinction à faire.
Syntaxe basée sur le constructeur (via new Object()) :
Cette approche implique instancier un nouvel objet à l'aide du mot-clé new et du constructeur Object(), comme le montre le premier exemple de code :
person = new Object()
Notation littérale d'objet :
En revanche , la notation littérale d'objet fournit un moyen concis de définir des objets directement entre accolades, comme le démontre le deuxième exemple de code :
person = { property1 : "Hello" };
Différences dans la définition de la méthode :
La principale différence entre ces deux approches se manifeste lors de l'incorporation de méthodes dans des objets.
Utilisation de littéraux d'objet (inconvénients) :
Lors de la définition de méthodes dans des littéraux d'objet, chaque instance d'objet contient sa propre copie de la méthode, ce qui entraîne une surcharge de mémoire, en particulier lorsque vous travaillez avec de nombreux objets ou méthodes.
function Obj( prop ) { return { p : prop, sayHello : function(){ alert(this.p); }, }; } var foo = new Obj( "hello" ); // creates a new instance of Obj
Utilisation de new Object() avec l'héritage prototypique (Avantages) :
Grâce à la syntaxe basée sur le constructeur, des méthodes peuvent être définies sur le prototype de l'objet, permettant à toutes les instances de partager la même méthode. Cette approche préserve la mémoire et est particulièrement bénéfique lors de la gestion de grands ensembles d'objets ou de hiérarchies de méthodes complexes.
function Obj( prop ) { this.p = prop; } Obj.prototype.sayHello = function(){alert(this.p);}; var foo = new Obj( "hello" ); // creates a new instance of Obj
Conclusion :
Dans les scénarios simples où les objets manquent de méthodes, les deux les approches fonctionnent de la même manière. Cependant, lorsque vous travaillez avec des objets nécessitant des méthodes, la syntaxe basée sur le constructeur avec héritage prototypique apparaît comme le meilleur choix, offrant des économies de mémoire significatives et une organisation efficace du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!