base.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. const base = {
  2. /**
  3. * [isXXX 基础方法]
  4. * @param {[type]} item [description]
  5. * @return {Boolean} [description]
  6. */
  7. isUndefined(item) {
  8. return typeof item === 'undefined';
  9. },
  10. isDefined(item) {
  11. return !base.isUndefined(item);
  12. },
  13. isString(item) {
  14. return typeof item === 'string';
  15. },
  16. isNumber(item) {
  17. return typeof item === 'number';
  18. },
  19. isArray(item) {
  20. return Object.prototype.toString.apply(item) === '[object Array]';
  21. },
  22. isObject(item) {
  23. return item && typeof item === 'object' && !base.isArray(item);
  24. },
  25. isFunction(item) {
  26. return typeof item === 'function';
  27. },
  28. /**
  29. * [功能方法]
  30. * @param {[type]} item [description]
  31. * @return {Boolean} [description]
  32. */
  33. isPhone(str) {
  34. return /^1\d{10}$/.test(str);
  35. },
  36. /**
  37. * [公共方法]
  38. * @param {[type]} item [description]
  39. * @return {Boolean} [description]
  40. */
  41. noop() {
  42. return null;
  43. },
  44. hasOwn(obj, type) {
  45. return Object.prototype.hasOwnProperty.call(obj, type);
  46. },
  47. /**
  48. * [getXXX 增强方法]
  49. * @param {[type]} item [description]
  50. * @return {Boolean} [description]
  51. */
  52. getString(item, defaultStr) {
  53. if (base.isString(item)) return item.trim();
  54. if (base.isNumber(item)) return `${item}`.trim();
  55. return defaultStr || '';
  56. },
  57. /**
  58. * [
  59. * getNumber(0),
  60. * getNumber(-0),
  61. * getNumber('0'),
  62. * getNumber('-0'),
  63. * getNumber(123),
  64. * getNumber(-12),
  65. * getNumber(1/0),
  66. * getNumber(-1/0),
  67. * getNumber(''),
  68. * getNumber('a'),
  69. * getNumber(true),
  70. * getNumber(false),
  71. * getNumber([]),
  72. * getNumber({}),
  73. * getNumber(null),
  74. * getNumber(undefined)
  75. * ]
  76. */
  77. getNumber(item, defaultNum) {
  78. const isValidNumber =
  79. ['NaN', 'Infinity', '-Infinity'].indexOf(`${+item}`) === -1;
  80. const hasStrNumber = /\d+/.test(`${item}`);
  81. return isValidNumber && hasStrNumber ? +item : base.isDefined(defaultNum) ? defaultNum : -1;
  82. },
  83. getArray(item, defaultArr) {
  84. return base.isArray(item) ? item : defaultArr || [];
  85. },
  86. getObject(item, defaultObj) {
  87. return item && base.isObject(item) ? item : defaultObj || {};
  88. },
  89. getFunction(item) {
  90. return base.isFunction(item) ? item : null;
  91. },
  92. /**
  93. * [JSON方法]
  94. * @param {[type]} item [description]
  95. * @return {Boolean} [description]
  96. */
  97. _json(item) {
  98. let str = { type: Object.prototype.toString.call(item) };
  99. try {
  100. str = JSON.stringify(item, null, 2);
  101. } catch (e) {
  102. str.error = (e && e.message) || '';
  103. }
  104. return base.isString(str) ? str : base.getString(str, `${str}`);
  105. },
  106. _parse(item) {
  107. let obj = { type: Object.prototype.toString.call(item) };
  108. try {
  109. obj = JSON.parse(item);
  110. } catch (e) {
  111. obj.error = (e && e.message) || '';
  112. }
  113. return base.isObject(obj) ? obj : base.$parse(obj);
  114. },
  115. /**
  116. * [自定义导航方法]
  117. * @param {...[type]} arg [description]
  118. * @return {[type]} [description]
  119. */
  120. _navigateTo(obj) {
  121. const len = getCurrentPages().length;
  122. if (len >= 10) {
  123. /* eslint-disable */
  124. console.warn('[getCurrentPages] length: ', len, '. navigateTo -> redirectTo');
  125. /* eslint-enable */
  126. wx.redirectTo(obj);
  127. } else {
  128. wx.navigateTo(obj);
  129. }
  130. }
  131. };
  132. module.exports = base;