Как мы все знаем, JavaScript - это самый неправильно понимаемый язык программирования в мире. Некоторые из нас считают, что - объекты не могут иметь частных переменных и методов экземпляра. Но это недоразумение. Объекты JavaScript могут иметь закрытые члены.
Объекты
По сути, JavaScript - это объекты. Массивы - это объекты. Функции - это объекты. Объекты есть объекты. Так что же такое предметы ???
Объекты - это коллекции пар имя-значение. Имена представляют собой строки, а значения - строки, числа, логические значения и объекты (включая массивы и функции). Объекты обычно реализуются в виде хэш-таблиц, поэтому значения могут быть получены быстро.
Хеш-таблицы - это структура данных, в которой данные хранятся в формате массива, где каждое значение данных имеет собственное уникальное значение индекса. Если мы знаем индекс данных, мы можем очень быстро получить к ним доступ.
Итак, это хеш-таблицы, возвращающиеся к объектам -
Если значение является функцией, мы можем рассматривать его как метод. Когда вызывается метод объекта, переменная this присваивается объекту. Затем метод может получить доступ к переменным экземпляра через переменную this.
Объекты могут создаваться конструкторами, которые являются функциями, инициализирующими объекты. Конструкторы предоставляют функции, которые классы предоставляют на других языках, включая статические переменные и методы.
Общественные
Члены объекта - все публичные члены. Любая функция имеет доступ к этим публичным членам. Они могут добавлять, удалять или изменять этих участников.
есть два способа добавить членов в новый объект
- конструктор
- прототип
В конструкторе: этот метод используется для инициализации членов общедоступного экземпляра. В конструкторе есть переменная this. Мы можем добавить члены, используя переменную конструктора this.
function Container(param) {
this.member = param;
}
если мы построим новый объект = ›var myContainer = new Container (‘ abc ’);
then = ›myContainer.member содержит« abc ».
В прототипе: используя эту технику, мы можем добавить к объекту публичные члены. Когда член объекта ищется и не найден в объекте, он берется из члена прототипа конструктора. Этот метод используется для наследования, а также сохраняет память.
Container.prototype.f1 = function (string) {
return this.member + string;
}
мы можем вызвать метод = ›myContainer.stamp (‘ def ’)
что даст результат = ›« abcdef »
Чтобы узнать больше… вы можете проверить мою другую историю на странице: Прототип Javascript https://medium.com/@gourav_m/javascript-prototypes-e61a9953447a
Частный
Закрытые члены создаются конструктором. Мы не можем получить доступ к этому вне объекта
function Container(param) {
this.member = param;
var privateMember1 = 3;
var privateMember2 = this;
}
В этом конструкторе выше мы видим три члена частного экземпляра
- парам
- privateMember1
- privateMember2
Все эти члены прикреплены к объекту, и мы можем получить доступ к этим членам внутри частных методов объекта, но мы не можем получить доступ к нему извне объекта или его доступность для собственных общедоступных методов объектов.
function Container(param) {
function privateFunction() {
if (privateMember1 > 0) {
privateMember1 -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var privateMember1 = 3;
var privateMember2 = this;
}
Если мы сделаем = ›var P1 = new Container (« abc »);
P1 будет содержать = ›

Это означает, что вы можете получить доступ только к переменной member объекта, и вы не можете получить доступ к param, privateFunction, privateMember1 и privateMember2, потому что они являются закрытыми членами. Но вы можете получить доступ к частным членам в частные функции.
Выкройки:
Общедоступно:
function Constructor(…) {
this.membername = value;
}
Constructor.prototype.membername = value;
Личное:
function Constructor(...) {
var that = this;
var membername = value;
function membername(...) {...}
}