Home >Web Front-end >JS Tutorial >Learn JavaScript design patterns - singleton pattern_javascript skills

Learn JavaScript design patterns - singleton pattern_javascript skills

WBOY
WBOYOriginal
2016-05-16 15:19:161108browse

1. Definition

Guarantee that a class has only one instance and provide a global access point to it.
When you click the login button, a login floating window appears on the page. This login floating window is unique. No matter how many times you click the login button, this floating window will only be created once. Then this login floating window is suitable for use as a singleton. pattern to create.

2. Implementation Principle

It is not complicated to implement a singleton. Use a variable to mark whether an object has been created for a certain class. If so, the previously created object will be returned directly the next time you get an instance of the class.

3. Fake Singleton

Global variables are not in singleton mode, but in JavaScript development, we often use global variables as singletons.

var a = {};

Reduce naming pollution caused by global variables
(1) Use namespace

var namespace1 = {
  a: function(){},
  b: 2
}

(2) Use closures to encapsulate private variables

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

4. Lazy singleton: create object instances only when needed

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

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

5. Supplement:

(1) Lazy loading

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

lazyload();

(2) Preloading

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

preload();

I hope this article will be helpful to everyone learning JavaScript programming.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn