为什么我的单身人士不工作?

Why my singleton wont work?

我是 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()它returnsundefined,我们无法访问abc.pubVar为什么那?

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

提前致谢。

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

...然后呢?那你什么都不return。之后加上return instance;就可以了

您 return 实例启动时,但如果不是,您只需分配它而不是 return。

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 (typeof instance == 'undefined') {
        instance = init();
        return instance;
        console.log(instance);
      } else {
        return instance;
      }
    }
  };
})();

console.log(singletonIns.getInstance());