Если вы ссылаетесь на концепцию методов доступа, то простая цель - скрыть базовое хранилище от произвольных манипуляций. Самый экстремальный механизм для этого -
function Foo(someValue) {
this.getValue = function() { return someValue; }
return this;
}
var myFoo = new Foo(5);
/* We can read someValue through getValue(), but there is no mechanism
* to modify it -- hurrah, we have achieved encapsulation!
*/
myFoo.getValue();
Если вы имеете в виду фактическую функцию получения / установки JS, например. defineGetter
/ defineSetter
или { get Foo() { /* code */ } }
, тогда стоит отметить, что в большинстве современных движков последующее использование этих свойств будет намного медленнее, чем это было бы в противном случае. например. сравнить производительность
var a = { getValue: function(){ return 5; }; }
for (var i = 0; i < 100000; i++)
a.getValue();
против
var a = { get value(){ return 5; }; }
for (var i = 0; i < 100000; i++)
a.value;