Recursive JS object reference help

I would like a way to accomplish the equivalent of uncommenting line 28.

by mdg583

HTML

<html>
<body>
<pre id="target"></pre>
</body>
</html>

JavaScript

person_data = {
    "name": "SomeName",
    "location": {
        "name": "SomeLocation",
        "parentLocation": {
            "name": "SomeOtherLocation",
        }
    }
};

ValueMap = function(){
    return {
        type: "function",
        mapFunction: x => x
    }
}

ModelMap = function(model){
    return {
        type: "model",
        model: model,
    }
}

LocationMap = {
    fields: {
        "name": ValueMap(),
        //"parentLocation": ModelMap(LocationMap),
    }
}

PersonMap = {
    fields: {
        "name": ValueMap(),
        "location": ModelMap(LocationMap),
    }
}

mapValues = function(mapper, data){
    let ret = {};
    Object.keys(data).forEach(function(k){
        if(data.hasOwnProperty(k) && mapper.fields.hasOwnProperty(k)){
            let keyMap = mapper.fields[k];
            let val = data[k];
            if (keyMap.type == "function") {
                ret[k] = keyMap.mapFunction(val);
            } else if(keyMap.type == "model") {
                ret[k] = mapValues(keyMap.model, val);
            }
        }
    });
    return ret;
}

let result = mapValues(PersonMap, person_data);
document.getElementById("target").innerHTML = JSON.stringify(result);