javascript - 为什么我的单例无法工作?

标签 javascript singleton ecmascript-5

我是 JS 初学者,试图了解单例是如何工作的,在阅读了这么多单例模式之后,我得出结论,以下单例模式可以工作,

var singletonIns = (function() {
  var instance;
  function init() {
    var _pvtVar = 123;
    var pubVar = 111;
    var logPvt = function() {
      console.log(_pvtVar);
    };
    
    return {
      pubVar : pubVar,
      logPvt : logPvt
    };
  }
  return {
    getInstance : function() {
      if (!instance) {
        instance = init();
      } else {
        return instance;
      }
    }
  };
})();

它不会在运行时引发任何错误

但是,当我运行此代码时 var abc = singletonIns.getInstance() 它返回 undefined,并且我们无法访问 abc.pubVar这是为什么?

请像我五岁一样解释一下。

提前致谢。

最佳答案

if (!instance) {
    instance = init();

...然后呢?那么你就不会返回任何东西。之后添加 return instance; 就可以了。

当实例启动时,您将返回该实例,但如果不是,您只需分配它而不返回。

关于javascript - 为什么我的单例无法工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645258/

相关文章:

javascript - 为什么 JavaScript 中命名函数内的函数名称不再引用函数本身?

javascript - 为什么元素列表没有显示?

javascript - 在函数运行的函数中保留局部变量

javascript - 原型(prototype) : select element containing text (as jQuery :contains())

java - 单例模式: getInstance() vs Passing the singleton object?

javascript - 一个线性变量声明

javascript - 使用 Web 插件时,UFT 如何执行 Click 方法?

c# - 单例、遗传和继承——让所有子类都继承单例功能

java - 应用程序返回内存时单例不可用

javascript - 等效于 ES6 到 ES5 中的集合