Ordenar la matriz de objetos personalizados en JavaScript

Digamos que tengo una serie de objetos de empleado:

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")
];


En este punto,employees.sort() no significa nada, porque el intérprete no sabe cómo ordenar estos objetos personalizados. Así que paso en mi función de ordenación personalizada.

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


Ahoraemployees.sort() trabaja dandy.

Pero, ¿y si también quisiera controlar en qué campo se va a ordenar, pasándolo de alguna manera durante el tiempo de ejecución? ¿Puedo hacer algo como esto?

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

¿No puedo hacer que funcione, así que sugerencias? ¿Diseño de refactorización basada en patrones tal vez?

Respuestas a la pregunta(3)

Su respuesta a la pregunta