123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- export default {
- // 继承对象
- Extend(old, ...obj) {
- return Object.assign(old, ...obj)
- },
- // 判断是否是空对象、数组
- IsEmpty(obj) {
- if (obj == null) return true;
- if (obj.length > 0) return false;
- if (obj.length === 0) return true;
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) return false;
- }
- return true;
- },
- // 完美深拷贝
- DeepCopy(obj) {
- var str, newobj = obj.constructor === Array ? [] : {};
- if (typeof obj !== 'object') {
- return;
- } else if (JSON) {
- str = JSON.stringify(obj), //系列化对象
- newobj = JSON.parse(str); //还原
- } else {
- for (var i in obj) {
- newobj[i] = typeof obj[i] === 'object' ?
- cloneObj(obj[i]) : obj[i];
- }
- }
- return newobj;
- },
- // 拷贝对象,对于null,undefined,function等数据会失效
- Origin(obj) {
- if (typeof obj === 'object') {
- try {
- return JSON.parse(JSON.stringify(obj))
- } catch (err) {}
- }
- console.log('Fun-Origin 错误的对象格式', obj)
- return obj
- },
- // 数组转成对象
- ArrayToObject(arr, key) {
- let obj = {}
- if (Array.isArray(arr) && arr.length) {
- arr.forEach((item, index) => {
- obj[item[key] ? item[key] : index] = this.Origin(item)
- })
- }
- return obj
- },
- //
- // 缓存
- //
- Cache(key, val, timeout) {
- if (key) {
- let date = new Date()
- if (val === null) {
- // 清除缓存
- uni.removeStorageSync(`${key}_timeout`)
- return uni.removeStorageSync(key)
- } else if (val === undefined && timeout === undefined) {
- // 获取缓存
- let cache = uni.getStorageSync(key)
- if (cache === undefined) {
- return undefined
- } else {
- let expired = uni.getStorageSync(`${key}_timeout`)
- if (expired && date > expired) {
- uni.removeStorageSync(key)
- uni.removeStorageSync(`${key}_timeout`)
- return undefined
- }
- return cache
- }
- } else if (val !== undefined) {
- // 存储缓存
- if (timeout) {
- let throughSecond = 0
- if (typeof timeout === 'number') {
- throughSecond = timeout
- } else if (typeof timeout === 'string') {
- let number = parseInt(timeout)
- let unit = timeout.charAt(timeout.length - 1)
- if (number && number > 0) {
- if (unit === 'd' || unit === 'day' || unit === 'D') {
- throughSecond = number * 60 * 60 * 24
- } else if (unit === 'h' || unit === 'hour' || unit === 'H') {
- throughSecond = number * 60 * 60
- } else if (unit === 'm' || unit === 'minute' || unit === 'H') {
- throughSecond = number * 60
- } else {
- throughSecond = number
- }
- }
- }
- if (throughSecond) {
- let expired = new Date(throughSecond * 1000 + (new Date()).valueOf())
- uni.setStorageSync(`${key}_timeout`, expired)
- }
- }
- return uni.setStorageSync(key, val)
- }
- }
- return undefined
- },
- CacheClean() {
- uni.clearStorage()
- },
- Token(token) {
- if (token === undefined) {
- return this.Cache('token')
- } else if (token === null) {
- return this.Cache('token', null)
- } else if (token) {
- return this.Cache('token', token)
- }
- },
- //
- // 时间
- //
- Time(data, format = "yyyy-MM-dd hh:mm") {
- return this.UnTimestamp(data, format)
- },
- Timestamp(date) {
- let time = date ? new Date(date) : new Date()
- return Date.parse(time) / 1000
- },
- UnTimestamp(time = new Date(), format = "yyyy-MM-dd hh:mm:ss") {
- if (typeof time === 'string' || typeof time === 'number') {
- if (time % 1 === 0 && time < 10000000000) {
- time = new Date(time * 1000)
- } else {
- time = new Date(time)
- }
- }
- if (time === null || time === '0000-00-00 00:00:00' || time == '') {
- time = new Date(0)
- }
- let date = {
- "M+": time.getMonth() + 1,
- "d+": time.getDate(),
- "h+": time.getHours(),
- "m+": time.getMinutes(),
- "s+": time.getSeconds(),
- "q+": Math.floor((time.getMonth() + 3) / 3),
- "S+": time.getMilliseconds()
- };
- if (/(y+)/i.test(format)) {
- format = format.replace(RegExp.$1, (time.getFullYear() + '').substr(4 - RegExp.$1.length));
- }
- for (let k in date) {
- if (new RegExp("(" + k + ")").test(format)) {
- format = format.replace(RegExp.$1, RegExp.$1.length == 1 ?
- date[k] : ("00" + date[k]).substr(("" + date[k]).length));
- }
- }
- return format
- },
- }
|