/**
* Object.defineProperty but "lazy", 意思是這個值只在之後設置
* 它是第一次檢索,而不是立即設置。
*
* @param {Object} obj 設置屬性的對象
* @param {string} key 要設置的屬性的鍵
* @param {Function} getValue 用於在需要時獲取值的函數。
* @param {boolean} setter 是否應該允許 setter
*/
const defineLazyProperty = function(obj, key, getValue, setter = true) {
常量集 = (值) =>
Object.defineProperty(obj, key, {value, enumerable: true, writable: true});
常量選項 = {
可配置:真,
可枚舉:真實,
得到() {
常量值 = getValue();
設定值);
返回值;
}
};
如果(二傳手){
選項.set = 設置;
}
返回 Object.defineProperty(obj, key, options);
};
導出默認 defineLazyProperty;