В JavaScript нет такого понятия, как приватность, поэтому это недостижимо.Как правило, у нас нет общих свойств или методов установки / получения, как у других C # / Java.
Шаблон, который можно использовать, это замыкания вместо прототипов.
var Human = function() {
var a = Math.random();
var o = {};
Object.defineProperties(o, {
"A": {
"get": function() {
return a;
},
"set": function(val) {
a = val;
}
}
});
return o;
}
В общем, хотя выне следует записывать свойства в прототип.Прототип должен содержать методы.
Единственный способ очистки this._a
заключается в следующем
var Human = (function() {
var Human=function(){
this._a=Math.random();
};
var before_get = function(human) {
};
var before_set = function(human, v) {
};
Human.prototype={
getA(){
before_get(this);
return this._a;
},
setA(v){
before_set(this, v);
this._a=v;
}
};
return function(args) {
var h = new Human(args);
return {
getA: h.getA.bind(h),
setA: h.setA.bind(h)
}
}
})();