Я написал следующее как реализацию паттерна модуля:
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());
Он отличается от примеров, которые я обычно могу найти в Интернете, поскольку не использует IIFE и не использует конструктор как таковой ...
Есть ли проблема с тем, что я сделал?
Я лично не вижу в этом ничего плохого ... Кажется, что методы и переменные инкапсулируются должным образом.
ПРИМЕЧАНИЕ: я также понимаю, что многие методы не нужны, я просто хотел проверить несколько вещей, чтобы увидеть, смогу ли я сломать его.