Expressions de fonction avec le « nouveau » mot-clé : dévoiler la nature statique
En JavaScript, comprendre le comportement des expressions de fonction avec le « nouveau » le mot-clé est crucial. Considérez le code suivant :
var gameData = new function () { // Function expressions require no constructor this.storageAvailable = function () { ... }; };
Il est important de noter que le mot-clé 'new' dans ce cas n'implique pas d'instanciation et ne permet pas la création de plusieurs instances. Au lieu de cela, il exécute simplement l'expression de fonction et attribue l'objet anonyme résultant à la variable « gameData ».
L'idée fausse du comportement statique
Le concept de comportement statique dans C# peut donner l’impression à tort que l’expression de fonction en JavaScript se comporte également de manière statique. Cependant, cela est inexact. Le mot-clé 'new' ici n'empêche pas la création d'un deuxième objet :
var gameData2 = new (gameData.constructor)(); // Reinstantiation is possible
De plus, l'expression de fonction a toujours une propriété constructeur pointant vers la fonction anonyme, accessible en utilisant 'gameData.constructor '. Cela va à l'encontre de l'objectif d'une véritable classe statique.
Alternatives au comportement statique
Si l'intention est de créer un objet unique non instanciable, il existe des solutions plus appropriées. alternatives à l'utilisation d'expressions de fonction avec 'new' :
En conclusion, les expressions de fonction avec de « nouveaux » mots-clés en JavaScript ne présentent pas de comportement statique car elles peuvent être instanciées plusieurs fois et avoir une propriété de constructeur publique accessible via 'gameData.constructor'. Pour un véritable comportement statique, envisagez d'adopter des approches alternatives telles que les littéraux d'objet, les modèles de module révélateurs ou le modèle singleton.
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!