Maison > interface Web > js tutoriel > le corps du texte

Apprendre les modèles de conception JavaScript - compétences singleton pattern_javascript

WBOY
Libérer: 2016-05-16 15:19:16
original
1098 Les gens l'ont consulté

1. Définition

Garantir qu'une classe n'a qu'une seule instance et lui fournir un point d'accès global.
Lorsque vous cliquez sur le bouton de connexion, une fenêtre flottante de connexion apparaît sur la page. Cette fenêtre flottante de connexion est unique. Peu importe le nombre de fois que vous cliquez sur le bouton de connexion, cette fenêtre flottante ne sera créée qu'une seule fois. à utiliser comme modèle singleton à créer.

2.Principe de mise en œuvre

Il n'est pas compliqué d'implémenter un singleton. Utilisez une variable pour marquer si un objet a été créé pour une certaine classe. Si tel est le cas, l'objet précédemment créé sera renvoyé directement la prochaine fois que vous obtiendrez une instance de la classe.

3. Faux Singleton

Les variables globales ne sont pas en mode singleton, mais dans le développement JavaScript, nous utilisons souvent des variables globales comme singletons.

var a = {};

Copier après la connexion

Réduire la pollution de dénomination causée par les variables globales
(1) Utiliser l'espace de noms

var namespace1 = {
  a: function(){},
  b: 2
}
Copier après la connexion

(2) Utilisez des fermetures pour encapsuler des variables privées

var user = (function() {
  var _name = 'lee',
    _age = '25';
  return {
    getUserInfo: function() {
      return _name + ":" + _age;
    }
  };
})();
Copier après la connexion

4. Singleton paresseux : créez des instances d'objet uniquement lorsque cela est nécessaire

var getSingle = function(fn) {
  var result;
  return function() {
    return result || (result = fn.apply(this, arguments));
  };
};

// 测试
function testSingle(){}
getSingle(testSingle)() === getSingle(testSingle)();  // true

Copier après la connexion

5. Supplément :

(1) Chargement paresseux

var lazyload = function() {
  console.log(1);
  lazyload = function() {
    console.log(2);
  }
  return lazyload();
}

lazyload();
Copier après la connexion

(2) Préchargement

var preload = (function() {
  console.log(1);
  preload = function() {
    console.log(2);
  };
  return preload;
})();

preload();
Copier après la connexion

J'espère que cet article sera utile à tous ceux qui apprennent la programmation JavaScript.

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal