Maison > interface Web > js tutoriel > Une expression de fonction JavaScript créée avec le « nouveau » est-elle vraiment statique ?

Une expression de fonction JavaScript créée avec le « nouveau » est-elle vraiment statique ?

Susan Sarandon
Libérer: 2024-12-11 19:04:13
original
783 Les gens l'ont consulté

Is a JavaScript Function Expression Created with `new` Truly Static?

Expressions de fonction et comportement statique en JavaScript

Lors de l'utilisation du mot-clé new avec une expression de fonction JavaScript, certains développeurs peuvent croire à tort que le résultat l'objet se comporte de manière statique. Cependant, cette hypothèse n'est pas entièrement exacte.

Le mot-clé new crée une nouvelle instance d'un objet et l'expression de fonction devient le constructeur de cette instance. Bien que l'objet résultant puisse présenter un comportement de type statique, comme être accessible sans instanciation, il possède toujours une propriété de constructeur qui pointe vers la fonction anonyme.

Considérez l'exemple fourni :

var gameData = new function () {
  // ...
};
Copier après la connexion

Même si le mot-clé new est utilisé, il est toujours possible d'instancier des objets supplémentaires à l'aide du constructeur gameData :

var gameData2 = new (gameData.constructor)();
Copier après la connexion

Cela signifie que le L'objet gameData n'est pas vraiment statique. Au lieu de cela, la propriété constructeur est « divulguée », permettant la création de plusieurs instances. De plus, un objet prototype est créé pour gameData, ce qui peut introduire une complexité inutile si les variables privées ou l'héritage ne sont pas prévus.

Pour créer un véritable objet singleton en JavaScript, il faut envisager d'utiliser un modèle différent tel qu'un objet un modèle de module littéral et révélateur, ou une fonction de constructeur dédiée qui applique une seule instanciation.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal