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

时间:2016-09-22 17:24:27

标签: 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为什么会这样?

请像我一样解释哟。

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

......然后是什么?那你就什么都不回。之后添加return instance;,你会没事的。

你启动它时会返回实例,但是如果它不是你只是分配它而不是返回。

答案 1 :(得分:1)

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());