Was ist der beste Weg, um eine Objekteigenschaft in Javascript zu bekommen / zu setzen?

Es ist bekanntermaßen ärgerlich, von einem Objekt eine tiefere Eigenschaft zu erhalten. Wenn das übergeordnete Element nicht vorhanden ist, wird eine Fehlermeldung angezeigt. Sie müssen also aufhören, zur Unterkunft zu gelangen, wenn kein Elternteil vorhanden ist.

Der ahnungslose Weg, dies zu tun, ist:

if (parent.value && parent.value.subvalue && parent.value.subvalue.targetvalue)
    var myVal = parent.value.subvalue.targetvalue;
else
    var myVal = null;

Wenn Sie eine Eigenschaft häufig abrufen müssen, ist dies nicht möglich und Sie benötigen eine Verknüpfungsfunktion. Zuerst habe ich so etwas gemacht:

function getProp(path) {
    try {
        return eval(path);
    }
    catch (e) {
        return null;
    }
};
// getProp('parent.value.subvalue.targetvalue');

Dies ist jedoch aus mindestens zwei Gründen lahm: Das Objekt muss sich im Gültigkeitsbereich befinden, und niemand mag es, es zu verwendeneval().

Vielleicht ist es besser, das Objekt auf die Funktion anzuwenden:

function getProp(path, parent) {
    path = path.split('.');

    var val = parent;

    for (var k = 0; k < path.length; k++) {
        var key = path[k];

        try {
            val = val[key];
        }
        catch (e) {
            return null;
        }
    }

    return val;
};
// getProp('value.subvalue.targetvalue', parent);

Aber irgendwie fühlt es sich immer noch nicht richtig an.
Wie machst Du das? Was ist die beste Vorgehensweise?

Noch ärgerlicher ist es, Objekte mit einer tiefen Eigenschaft zu setzen, die die Eltern möglicherweise besitzen oder nicht.

parent = parent || {};
parent.value = parent.value || {};
parent.value.subvalue = parent.value.subvalue || {};
parent.value.subvalue.target = "YAY SOME VALUE!"

Wie würden Sie das gut angehen?

Gibt es dafür noch Javascript-native Funktionen, da dies oft gemacht werden muss?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage