Ordenação de array de objetos personalizados em JavaScript

Digamos que eu tenha uma matriz de objetos de funcionários:

var Employee = function(fname, age) {
    this.fname = fname;
    this.age = age;
}

var employees = [
    new Employee("Jack", "32"),
    new Employee("Dave", "31"),
    new Employee("Rick", "35"),
    new Employee("Anna", "33")
];


Neste ponto,employees.sort() não significa nada, porque o interpretador não sabe como classificar esses objetos personalizados. Então eu passo na minha função de classificação personalizada.

employees.sort(function(employee1, employee2){
    return employee1.age > employee2.age;
});


Agoraemployees.sort() funciona dandy.

Mas e se eu também quisesse controlar o campo a ser classificado, passando-o de alguma forma durante o tempo de execução? Posso fazer algo assim?

employees.sort(function(employee1, employee2, on){
    if(on === 'age') {
        return employee1.age > employee2.age;
    }
    return employee1.fname > employee2.fname;
});

Eu não posso fazê-lo funcionar, então sugestões? Refatoração baseada em padrão de design, talvez?

questionAnswers(3)

yourAnswerToTheQuestion