text: Q:
  
  Инкапсуляция JavaScript
  
  Как достать инкапсулированное значение в прототип?
  Как это выглядит:
  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 в прототипе? 
  
  A:
  
  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 - невозможно.
  
  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]
  
  A:
  
  Ну если очень хочется, а условная приватность символов не устраивает, то можно так (при наличии WeakMap из ES6):
  
  var Smth = (function () {
    var privates = new WeakMap;
  
    function Smth(x, y) {
      this.x = x;
      privates.set(this, {y: y});
    }
    
    Smth.prototype.doSmth = function () {
      console.log(this.x + ' ' + privates.get(this).y);
    };
    
    return Smth;
  })();
  
  var a = new Smth(10, 13);
  var b = new Smth(123, 167);
  
  a.doSmth();
  b.doSmth();
  
  