Как достать инкапсулированное значение в прототип?
Как это выглядит:
function A(a,b){
this.a = a;
this.b = b;
var arr = [a,b];
}
A.prototype.A1 = function(){
console.log(this.a);
}
A.prototype.A2 = function(){
console.log(this.arr);
}
var a1 = new A(1,2);
a1.A1();//1
a1.A2();//undefined
Как использовать arr в прототипе?
arr в данном коде является локальной переменной.
Доступ к локальной переменной может быть осуществлен только внутри функции, в которой объявлена переменная.
Либо во внутренних функциях.
function A(a,b){
this.a = a;
this.b = b;
var arr = [a,b];
function B(){
console.log('B', arr); // доступно
}
console.log('A', arr); // доступно
}
A.prototype.C = function (){ /* arr недоступен */ }
Таким образом, использовать локальную переменную arr где-то еще кроме функции A - невозможно.
Рекомендую использовать Symbol для реализации более-менее приватных членов "класса".
var A = (function() {
var arrKey = Symbol();
A.prototype.getArr = function() {
return this[arrKey];
};
return A;
function A(a, b) {
this.a = a;
this.b = b;
this[arrKey] = [a, b];
};
})();
var a1 = new A(1, 2);
console.log(a1.getArr()); // [1, 2]
Продвижение своими сайтами как стратегия роста и независимости