I've written the following as an implementation of the module pattern:
let myClass = function (publicName, privateName)
{
  this.publicVar = publicName;
  let privateVar = privateName;
  this.publicMethod = function ()
  {
    return this.publicVar;
  }
  this.getPublic = function ()
  {
    return this.publicMethod();
  }
  this.setPublic = function (newPublicName)
  {
    this.publicVar = newPublicName;
  }
  this.getPrivate = function ()
  {
    return privateVar;
  }
  this.setPrivate = function (newPrivateName)
  {
    privateMethod(newPrivateName);
  }
  let privateMethod = function (newPrivateName)
  {
    privateVar = newPrivateName;
  }
  return this;
}
let a = new myClass('public A', 'private A');
let b = new myClass('public B', 'private B');
// A
console.log(a.publicVar);
console.log(a.publicMethod());
console.log(a.getPrivate());
a.setPrivate('private A-2');
console.log(a.getPrivate());
console.log(a.getPublic());
a.setPublic('public A-2');
console.log(a.getPublic());
// B
console.log(b.publicVar);
console.log(b.publicMethod());
console.log(b.getPrivate());
b.setPrivate('private B-2');
console.log(b.getPrivate());
console.log(b.getPublic());
b.setPublic('public B-2');
console.log(b.getPublic());It differs from examples I can generally find on the web though, as it doesn't use an IIFE, and doesn't use a constructor as such...
Is there a problem with what I've done?
I can't see anything wrong with it personally... It seems to encapsulate the methods and variables as it should.
NOTE: I also realise that a lot of the methods are unnecessary, I just wanted to test a few things to see if I could break it.
