export function getQueryString(name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") let r = window.location.search.substr(1).match(reg) if (r != null) { return window.decodeURIComponent(r[2]) } return null } export function debounce(fn, delay) { let timer; // 定时器 return function (...args) { // 形成闭包 // args 为函数调用时传的参数。 let context = this; timer && clearTimeout(timer); // 当函数再次执行时,清除定时器,重新开始计时 // 利用定时器,让指定函数延迟执行。 timer = setTimeout(function () { // 执行传入的指定函数,利用apply更改this绑定和传参 fn.apply(context, args); }, delay) } } export function throttle(fn, thresh) { var timeout var start = new Date; var threshhold = thresh || 500 return function () { var context = this, args = arguments, curr = new Date() - 0 clearTimeout(timeout)//总是干掉事件回调 if (curr - start >= threshhold) { fn.apply(context, args) //只执行一部分方法,这些方法是在某个时间段内执行一次 start = curr } else { // 让方法在脱离事件后也能执行一次 timeout = setTimeout(function () { fn.apply(context, args) }, threshhold); } } } export function setStorage(key, value) { return localStorage.setItem(key, JSON.stringify(value)); } export function getStorage(key) { const item = localStorage.getItem(key); try { return item ? JSON.parse(item) : ''; } catch (e) { return item; } } export function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } export function scaleNumber(num) { let length = num.toString().split('.')[1].length; let scale = '1'; for(let i = 0; i < length; i++) { scale += '0'; } let val = num * scale; return { val, scale }; } export function getBit (value) { const reg = /([0-9]+\.[0-9]{4})[0-9]*/; if(value) { let str = value.toString(); str = str.replace(reg,"$1"); return str; } else { return value; } }