/**
* Object.defineProperty mais "lazy", ce qui signifie que la valeur n'est définie qu'après que l'objet a été défini
* il est récupéré la première fois, au lieu d'être fixé immédiatement.
*
* @param {Object} obj l'objet sur lequel la propriété doit être définie
* @param {string} key la clé de la propriété à définir
* @param {Function} getValue la fonction utilisée pour obtenir la valeur lorsqu'elle est nécessaire.
* @param {boolean} setter si un setter doit être autorisé ou non
*/
const defineLazyProperty = function(obj, key, getValue, setter = true) {
const set = (valeur) =>
Object.defineProperty(obj, key, {value, enumerable : true, writable : true}) ;
const options = {
configurable : true,
énumérable : vrai,
get() {
const value = getValue() ;
set(valeur) ;
valeur de retour ;
}
};
if (setter) {
options.set = set ;
}
return Object.defineProperty(obj, key, options) ;
};
export default defineLazyProperty ;