help.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. export function getQueryString(name) {
  2. let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
  3. let r = window.location.search.substr(1).match(reg)
  4. if (r != null) {
  5. return window.decodeURIComponent(r[2])
  6. }
  7. return null
  8. }
  9. export function debounce(fn, delay) {
  10. let timer; // 定时器
  11. return function (...args) { // 形成闭包
  12. // args 为函数调用时传的参数。
  13. let context = this;
  14. timer && clearTimeout(timer); // 当函数再次执行时,清除定时器,重新开始计时
  15. // 利用定时器,让指定函数延迟执行。
  16. timer = setTimeout(function () {
  17. // 执行传入的指定函数,利用apply更改this绑定和传参
  18. fn.apply(context, args);
  19. }, delay)
  20. }
  21. }
  22. export function throttle(fn, thresh) {
  23. var timeout
  24. var start = new Date;
  25. var threshhold = thresh || 500
  26. return function () {
  27. var context = this, args = arguments, curr = new Date() - 0
  28. clearTimeout(timeout)//总是干掉事件回调
  29. if (curr - start >= threshhold) {
  30. fn.apply(context, args) //只执行一部分方法,这些方法是在某个时间段内执行一次
  31. start = curr
  32. } else {
  33. // 让方法在脱离事件后也能执行一次
  34. timeout = setTimeout(function () {
  35. fn.apply(context, args)
  36. }, threshhold);
  37. }
  38. }
  39. }
  40. export function setStorage(key, value) {
  41. return localStorage.setItem(key, JSON.stringify(value));
  42. }
  43. export function getStorage(key) {
  44. const item = localStorage.getItem(key);
  45. try {
  46. return item ? JSON.parse(item) : '';
  47. } catch (e) {
  48. return item;
  49. }
  50. }
  51. export function guid() {
  52. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  53. var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
  54. return v.toString(16);
  55. });
  56. }
  57. export function scaleNumber(num) {
  58. let length = num.toString().split('.')[1].length;
  59. let scale = '1';
  60. for(let i = 0; i < length; i++) {
  61. scale += '0';
  62. }
  63. let val = num * scale;
  64. return {
  65. val,
  66. scale
  67. };
  68. }
  69. export function getBit (value) {
  70. const reg = /([0-9]+\.[0-9]{4})[0-9]*/;
  71. if(value) {
  72. let str = value.toString();
  73. str = str.replace(reg,"$1");
  74. return str;
  75. } else {
  76. return value;
  77. }
  78. }