/**
* Object.defineProperty pero "perezoso", lo que significa que el valor solo se establece después
* se recuperó la primera vez, en lugar de configurarse de inmediato.
*
* @param {Object} obj el objeto para establecer la propiedad en
* @param {cadena} clave la clave para establecer la propiedad
* @param {Función} getValue la función utilizada para obtener el valor cuando se necesita.
* @param {boolean} setter si se debe permitir o no un setter
* /
const defineLazyProperty = function(obj, key, getValue, setter = true) {
const conjunto = (valor) =>
Object.defineProperty(obj, clave, {valor, enumerable: verdadero, escribible: verdadero});
opciones constantes = {
configurable: verdadero,
enumerable: cierto,
conseguir() {
valor constante = obtenerValor();
valor ajustado);
valor de retorno;
}
};
si (colocador) {
opciones.conjunto = conjunto;
}
devuelve Object.defineProperty(obj, clave, opciones);
};
exportar predeterminado defineLazyProperty;