/**
* Object.defineProperty aber "lazy", d.h. der Wert wird erst nach
* beim ersten Mal abgerufen wird und nicht sofort eingestellt wird.
*
* @param {Object} obj das Objekt, auf das die Eigenschaft gesetzt werden soll
* @param {string} key der Schlüssel für die zu setzende Eigenschaft
* @param {Function} getValue die Funktion, die verwendet wird, um den Wert zu erhalten, wenn er benötigt wird.
* @param {boolean} setter ob ein setter erlaubt sein soll oder nicht
* /
const defineLazyProperty = function(obj, key, getValue, setter = true) {
const set = (Wert) =>
Object.defineProperty(obj, key, {value, enumerable: true, writable: true});
const options = {
konfigurierbar: wahr,
aufzählbar: wahr,
get() {
const value = getValue();
set(wert);
rückgabewert;
}
};
wenn (Setter) {
options.set = set;
}
return Object.defineProperty(obj, key, options);
};
exportieren standardmäßig defineLazyProperty;