家政小程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * 常用工具库
  3. * @author andy
  4. */
  5. const _util = {
  6. /***
  7. * 类型检测
  8. * @param {*} item 待检测数据
  9. */
  10. checkType(item) {
  11. const classType = {};
  12. const toString = Object.prototype.toString;
  13. // 生成classType映射
  14. ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp',
  15. 'Object', 'Error', 'Symbol', 'Map', 'Set', 'WeakSet', 'WeakMap'
  16. ].map((item) => {
  17. classType[`[object ${item}]`] = item.toLowerCase();
  18. });
  19. const _checkType = obj => {
  20. if (obj == null) {
  21. return `${obj}`;
  22. }
  23. return typeof obj === 'object' || typeof obj === 'function' ?
  24. classType[toString.call(obj)] || 'object' :
  25. typeof obj;
  26. };
  27. return _checkType(item);
  28. },
  29. /**
  30. * 深复制
  31. * @param {目标值} target
  32. * @param {原始值} source
  33. */
  34. assign(target, source) {
  35. target = target || {};
  36. for (let item in source) {
  37. if (typeof source[item] === 'object' && source[item] !== null) {
  38. target[item] = (toString.apply(source[item]) === '[object Array]') ? [] : {};
  39. this.assign(target[item], source[item]);
  40. } else {
  41. target[item] = source[item];
  42. }
  43. }
  44. return target;
  45. },
  46. /**
  47. * 获取url的query参数
  48. */
  49. getURLParms(url) {
  50. const result = {};
  51. let str = url;
  52. const start = str.indexOf('?');
  53. str = str.substr(start + 1);
  54. const arr = str.split('&');
  55. for (let item of arr) {
  56. let tmp = item.split('=');
  57. result[tmp[0]] = tmp[1];
  58. }
  59. return result;
  60. }
  61. };
  62. export default _util;