Maison > interface Web > js tutoriel > Est-ce que « nouveau » avec les expressions de fonction JavaScript crée un comportement statique ?

Est-ce que « nouveau » avec les expressions de fonction JavaScript crée un comportement statique ?

Barbara Streisand
Libérer: 2024-12-15 08:34:15
original
962 Les gens l'ont consulté

Does `new` with JavaScript Function Expressions Create Static Behavior?

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 () { ... };
};
Copier après la connexion

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
Copier après la connexion

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' :

  • Littéraux d'objet : Ce sont objets JavaScript simples sans constructeur ni prototype, garantissant l'unicité.
  • Révéler le modèle de module : Une IIFE (Immediately Invoked Function Expression) peut être utilisée pour créer une variable de portée de fermeture, renvoyant un objet avec les propriétés souhaitées.
  • Modèle Singleton : Ce modèle de conception crée une instance unique et contrôlée d'une classe qui garantit toutes les références à celui-ci pointent vers le même objet.

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!

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