'hold an private array with module pattern js

I'm using module pattern on JS. Trying to make 2 private properties which first property will hold the number i.e 3. The second property is array of string which hold the items. I've been trying but it gives me an error (undefined)

//MODULE DESIGN PATTERN
var myModule = function() {
  //PRIVATE PROPERTIES AND METHODS
  var holdNumber = 3;
  var arrhold = [];

  //private
  function PrivateMessage(obj) {
    console.log("Object successfully added: " + obj)
  }

  //public
  function addObject(obj) {
    arrhold.push(obj);
    PrivateMessage(obj);
  }

  return {
    addItem: addObject
  }
}();

console.log(myModule.addItem("A"));
console.log(myModule.addItem("A"));


Solution 1:[1]

addObject does not return any data from arrhold. If you want to add and print that array, you should add return to addObject

//MODULE DESIGN PATTERN
var myModule = function() {
  //PRIVATE PROPERTIES AND METHODS
  var holdNumber = 3;
  var arrhold = [];

  //private
  function PrivateMessage(obj) {
    console.log("Object successfully added: " + obj)
  }

  //public
  function addObject(obj) {
    arrhold.push(obj);
    PrivateMessage(obj);
    return arrhold; //return arrhold
  }

  return {
    addItem: addObject
  }
}();

console.log(myModule.addItem("A"));
console.log(myModule.addItem("A"));

Solution 2:[2]

addObject doesn't return anything, so the console.log(myModule.addItem("A")) is undefined

You can return arrhold which will give you the desired value:

//MODULE DESIGN PATTERN
var myModule = function() {
  //PRIVATE PROPERTIES AND METHODS
  var holdNumber = 3;
  var arrhold = [];

  //private
  function PrivateMessage(obj) {
    console.log("Object successfully added: " + obj)
  }

  //public
  function addObject(obj) {
    arrhold.push(obj);
    PrivateMessage(obj);
    return arrhold
  }

  return {
    addItem: addObject
  }
}();

console.log(myModule.addItem("A"));
console.log(myModule.addItem("A"));

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nick Vu
Solution 2 Anurag Srivastava