Valor de intercambio de dos propiedades en objeto (s)

Estoy intentando crear una función simple que intercambiará los valores de dos propiedades en el mismo objeto global o en objetos diferentes.

object1 = {"key 1":"value 1"};
object2 = {"key 2":"value 2"};

swapValuesInObject ("object1['key 1']","object2['key 2']",true)
// should result in:
// object1 === {"key 1":"value 2"};
// object2 === {"key 2":"value 1"};

Otro ejemplo:

object1 = {"key 1":"value 1", "key 2":"value 2"};

swapValuesInObject ("object1['key 1']","object1['key 2']",1===1)
// should result in:
// object1 === {"key 1":"value 2", "key 2":"value 1"};

Esto es lo que he podido llegar hasta ahora, pero no es mucho. Quedando colgado de cómo hacer la tarea.

function swapValuesInObject(property1, property2, condition) {
    if (condition) {
        // temp assignment
        var Obj1Value = property1;

        // do the switcheroo
        array1 = array2Value;
        array2 = array1Value;
    }
    return true;
};

¿Cuál es la forma correcta de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta