Überprüfung einiger 3rd-Party-Code, ich habe eine Funktion gefunden, geschrieben, um eine Eigenschaft eines Objekts zu erhalten.Implementieren einer Funktion zum Zugreifen auf eine Objekteigenschaft im Gegensatz zum Zugriff auf die Eigenschaft mithilfe der Punktnotation oder Klammernnotation?
function getObjectProperty (obj, propertyName) {
var o;
if (obj) {
o = obj[propertyName];
if (o != null) {
if (typeof o == 'function') return o();
}
}
return o;
}
Ein Beispiel, wie diese Funktion aufgerufen wird, ist:
var foo = getObjectProperty(r, 'objProp')
Gibt es einen Nutzen Sie diese benutzerdefinierte Funktion mit der Eigenschaft zu holen, anstatt nur, dies zu tun:
var foo = r.objProp
oder
var foo = r['objProp']
Ich verstehe einfach nicht den Nutzen dieser Funktion, wenn es eine gibt? Ich konnte kein anderes Beispiel für diese Funktion finden, daher kann ich nur annehmen, dass es für diese Anwendung maßgeschneidert war. Das einzige, was ich sehen kann, ist, dass es einen Funktionsaufruf zurückgibt, wenn die Objekt-Eigenschaft eine Funktion ist, aber selbst dann könnte man einfach schreiben:
var foo = r.objProp()
Der Unterschied mit Ihrer Funktion berechnet ist, dass sie den Wert auspacken, wenn es eine Funktion ist (durch Aufruf) –
Soweit ich kann sagen, du hast recht. Es vereinfacht nur das Abrufen von Werten aus Funktionen, wenn Sie die Funktion, die Syntax selbst aufruft, nicht verwenden möchten. Vielleicht wurde es geschrieben, bevor [getters] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get) verfügbar war oder rückwärtskompatibel mit Browsern sein sollte, t unterstützen sie. –
Danke für die Kommentare. Ich weiß, dass "Code-Erklärung" Fragen wie diese normalerweise nicht willkommen sind, aber ich konnte einfach nicht verstehen, warum das getan wurde. –