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 () { // ... };
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)();
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!