定义

保证一个类仅有一个实例,并提供一个访问它的全局访问点

个人理解

拿经典游戏贪吃蛇为例,蛇吃的食物每次都出现一个,按照我没学习单例模式之前的思想,会生成一个食物类,当蛇吧食物吃啦时,就需要创建一个新的食物,那这样对js引擎来说,不就是一个重复的操作。这也就是单例模式解决的问题

代码实现

  1. var Test = (function() {
  2. var intance;
  3. return function (name) {
  4. if(typeof intance === 'object') {
  5. return intance;
  6. }
  7. this.name = name;
  8. intance = this;
  9. }
  10. }) ()
  11. const a = new Test('a')
  12. Test.age = 12;
  13. const b = new Test('1')
  14. console.log(a === b);

实现传入普通函数,改造成单例模式

  1. var getSingle = function(func) {
  2. var result;
  3. return function () {
  4. if (!result) {
  5. result = func.apply(this, arguments);
  6. }
  7. return result ;
  8. }
  9. }