Maison >interface Web >js tutoriel >Apprendre les modèles de conception JavaScript - compétences singleton pattern_javascript

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBoriginal
2016-05-16 15:19:161148parcourir

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 = {};

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
}

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

var user = (function() {
  var _name = 'lee',
    _age = '25';
  return {
    getUserInfo: function() {
      return _name + ":" + _age;
    }
  };
})();

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

5. Supplément :

(1) Chargement paresseux

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

lazyload();

(2) Préchargement

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

preload();

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

Déclaration:
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