Q:

JS - сортировка массива объектов по приватным переменным

Как отсортировать массив объектов по приватным переменным, получая их через геттер. 
Возможно ли это?
function SortProduct(products, sortRule) {
    var arr = products;

        arr.sort(function(a, b) {
            return a.getPrice() - b.getPrice();
        });

    return arr;
}

A:

Почему не работает когда отнимаешь?

Скорее всего потому что getPrice в вашем коде возвращает не число а что то другое. 
[UPDATE] в моем примере я ипользую условие чтобы компаратор возвращал -1, 0 или 1 но это не нужно и можно просто вернуть a.getPrice() - b.getPrice() Бес меня попутал с java.

function Product(productPrice) {
  var price = productPrice;
  this.getPrice = function() {
    return price;
  }
}

function SortProducts(products) {
  products.sort(function(b, a) {
    if (a.getPrice() === b.getPrice()) {
      return 0;
    }
    return a.getPrice() > b.getPrice() ? 1 : -1;
  });
}

var product1 = new Product(12.99);
var product2 = new Product(3.50);
var product3 = new Product(6.70);
var products = [product1, product2, product3];

SortProducts(products);
products.forEach(function(entry) {
  console.log(entry.getPrice());
});

