import React, { Component } from "react"; import { EcodeHighlight } from 'emptyd'; import { hot } from 'react-hot-loader'; @hot(module) class EmptyTool extends Component { render() { return ( <>

empty通用工具类

{` $cnpm i freetool `}

检测数据类型包括引用类型的数据 freetool.GetType

{` freetool.GetType(data); /*返回值: string boolean undefined number null array object date function symbol set map formData */ `}

检测基本数据类型 freetool._typeof

{` //symbol类型做了浏览器兼容处理 freetool._typeof(data); /*返回值: string boolean undefined number null symbol */ `}

浅拷贝 freetool._extends

{` // 浅拷贝 _extends() { this._extends = Object.assign || function (target){ for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { //防止 source 对象改写 hasOwnProperty 方法 if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return this._extends.apply(this, arguments); } `}

深拷贝 freetool.mergeConfig

{` mergeConfig(defaultConfig, theConfig){ return merge(cloneDeep(defaultConfig), theConfig); } `}

防止constructor函数的this指向被改变 freetool._classCallCheck

{` //防止constructor函数的this指向被改变 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } `}

解析json 生成树结构对象 freetool.menuTreeGenerator

{` const menuTreeGenerator = (menuList)=> (id,pid,children)=> { let temObj = {}; let responseData:Array = []; let length = menuList.length; for(let i=0;i

判断对象是否相等 freetool.isObjectValueEqual

{` isObjectValueEqual:function(a, b) { let aProps = Object.getOwnPropertyNames(a); let bProps = Object.getOwnPropertyNames(b); if (aProps.length != bProps.length) { return false; } for (let i = 0; i < aProps.length; i++) { let propName = aProps[i]; if (a[propName] !== b[propName]) { return false; } } return true; } `}

串行函数 freetool.compose

{` compose(...funcs) { if (funcs.length === 0) { return arg => arg } if (funcs.length === 1) { return funcs[0] } return funcs.reduce((a, b) => (...args) => a(b(...args))) } `}

展开数组 freetool._flatten

{` _flatten(arr){ return [].concat(...arr.map((a)=>Array.isArray(a)?method.flatten(a):a)) } `}

freetool.promise_all

{` promise_all(promise:Array){ if(method.GetType(promise)!=="array"){ throw TypeError("promise_all params type must be an array!") } return new Promise((resolve,reject)=>{ let length = promise.length; let counter = 0; let responseArr = new Array(); for(let i=0;i{ counter++; responseArr[i]=value; if(counter===length){ resolve(responseArr); } },(error)=>{ reject(error); }) } }) } `}

函数截流 freetool.throttle

{` throttle:function(fn:Function,interval?:number){ let _self = fn; var timmer; let isFirst = true; return function(this:void){ let args = arguments; let _me = this; if(isFirst){ fn.apply(_me,args) return isFirst = false; } if(timmer){ return false; } timmer = setTimeout(function(){ clearTimeout(timmer); timmer = null; fn.apply(_me,args); },interval||500) } } `}

转换数组维度 freetool.transformArray

{` transformArray(num:number,array:Array):Array{ var Arr = new Array(Math.ceil(array.length/num)); for(var i = 0; i

cookie freetool.cookieUtil

{` const cookieUtil = { get:function(name){ let cookieName = encodeURIComponent(name)+'=', cookieStart = document.cookie.indexOf(cookieName), cookieValue:any = null; if(cookieStart>-1){ let cookieEnd = document.cookie.indexOf(';',cookieStart); if(cookieEnd == -1){ cookieEnd = document.cookie.length } cookieValue = decodeURIComponent(document.cookie.substring(cookieStart+cookieName.length,cookieEnd)); } return cookieValue; }, set:function(name, value, expires?:Date, path?:string, domain?:string, secure?:string){ let cookieText = encodeURIComponent(name)+'='+encodeURIComponent(value); if(expires instanceof Date){ cookieText+=";expires="+expires.toUTCString(); } if(path){ cookieText += ";path=" + path; } if(domain){ cookieText +=';domain='+domain; } if(secure){ cookieText+=';secure'; } document.cookie = cookieText; }, unset:function(name,path?:string,domain?:string,secure?:string){ this.set(name,'',new Date(0),path,domain,secure) } } `}

storage 相关 freetool.Local|freetool.Session

{` class Storage { public storage; constructor(storage){ this.storage = storage; } get(key){ const val = this.storage.getItem(key); if (val) { return JSON.parse(Base64.decode(this.storage.getItem(key))); } return ''; } set(key, val){ const setting = arguments[0] if (Object.prototype.toString.call(setting).slice(8, -1) === 'Object') { for (const i in setting) { this.storage.setItem(i, Base64.encode(JSON.stringify(setting[i]))); } } else { this.storage.setItem(key, Base64.encode(JSON.stringify(val))); } } remove(key){ if (this.storage.getItem(key)) { this.storage.removeItem(key) } } clear(){ this.storage.clear() } } const Local = new Storage(window.localStorage); const Session = new Storage(window.sessionStorage); `}

更多请参用lodash

); } } export default EmptyTool;