Мы не заботимся о сокрытии публичной информации, так как источник открыт и интерпретируется клиентом на лету.
Свойства обычно не используются (они также медленные), а функции получения также редки.В Javascript нет ключевого слова private
, поэтому обертывание каждого общедоступного объекта в паре методов getter / setter было бы излишним.
Просто запишите свойства для ваших объектов.общепринятая практика, возможно, даже соглашение , заключается в добавлении к внутренним свойствам префикса _
, чтобы указать, что они не предназначены для изменения или проверки вызывающими.
Например:
function Foo() {
this._meta = {}; // internal use only
this.prop2 = {}; // public use ok
}
Foo.prototype.meta = function(key, val) {
if (val !== undefined) {
this._meta[key] = val;
} else {
return this._meta[key];
}
};
Этот код показывает открытый метод meta
и внутреннее свойство _meta
.К этому свойству можно получить доступ, но разработчики должны понимать, что, если они изменят его, они могут испортить состояние.