Javascript - 'Function' 不是函数单例模式

Javascript - 'Function' is not a function singleton pattern

我一直在努力学习Javascript。这是我的代码——我正在尝试实现一个单例——但出于某种原因,我在行 firstInstance.setMessage("Message"); 中收到错误 setMessage is not a function。我不知道我做错了什么 - 任何帮助将不胜感激。 `

var mySingleton = (function () {

   var instance;
   var message;

   function getInstance() {
            if (!instance) instance = new Object();
            return instance;
    }

    function setM (newMessage) {
            message = newMessage;
            return;
        }
        
    function getM() {
            return message;
        }

    return {
        createInstance:getInstance,
        setMessage:setM,
        getMessage:getM
       
    }

})();

var firstInstance = mySingleton.createInstance();
var secondInstance = mySingleton.createInstance();

//set messages

firstInstance.setMessage("Message");

console.log(firstInstance.getMessage());
console.log(secondInstance.getMessage());

//change messages 
secondInstance.setMessage("New");

console.log(firstInstance.getMessage());
console.log(secondInstance.getMessage());`

setMessagegetMessage 需要在您创建的 instance 上,而不是在 createInstance:

返回的对象中

var mySingleton = (function() {
  let instance;
  let message;

  function createInstance() {
    if (!instance) instance = { setMessage, getMessage };
    return instance;
  }
  function setMessage(newMessage) {
    message = newMessage;
  }
  function getMessage() {
    return message;
  }

  return { createInstance }
})();

var firstInstance = mySingleton.createInstance();
var secondInstance = mySingleton.createInstance();

firstInstance.setMessage("Message");

console.log(firstInstance.getMessage());
console.log(secondInstance.getMessage());

secondInstance.setMessage("New");

console.log(firstInstance.getMessage());
console.log(secondInstance.getMessage())