JS 基础公共方法封装

1: 深拷贝 和 数据类型判断

// 函数库
const _ = {}
// 1: 判断数据类型
_.type = function (obj) {
  return Object.prototype.toString.call(obj).replace(/\[object\s|\]/g, '')
}
// 2: 深拷贝-递归方式
_.deepCopy = function (obj) {
  let buf
  let type = _.type(obj)
  switch (type) {
    case 'Array':
      buf = []
      let i = obj.length
      while (i--) {
        buf[i] = _.deepCopy(obj[i])
      }
      return buf
    case 'Object':
      buf = {}
      for (let k in obj) {
        buf[k] = _.deepCopy(obj[k])
      }
      return buf
    default:
      return obj
  }
}
// 2:深拷贝-JSON对象的parse和stringify
_.deepClone2 = function (obj){
    let _obj = JSON.stringify(obj),
    objClone = JSON.parse(_obj);
    return objClone
}
// 3: 深拷贝-lodash的_.cloneDeep()
// 4: JQ的extend方法
$.extend( [deep ], target, object1 [, objectN ] )
   deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝
   target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。
   object1 objectN可选。 Object类型 第一个以及第N个被合并的对象。
_.deepClone4 = function (obj){
    let a=[0,1,[2,3],4],
    b = $.extend(true,[],a);
    return b
}
    
// 判断对象中是否存在某个key
_.hasOwnProperty = function (obj, property) {
  if (_.type(obj) == 'Object') {
    return obj.hasOwnProperty(property)
  }
  return false
}
export default _

2: 获取base64图片大小,返回KB数字

// 获取base64图片大小,返回KB数字
getImgSize(str) {
    //获取base64图片大小,返回KB数字
    var str = base64url.replace('data:image/jpeg;base64,', '');//这里根据自己上传图片的格式进行相应修改
    
    var strLength = str.length;
    var fileLength = parseInt(strLength - (strLength / 8) * 2);

    // 由字节转换为KB
    var size = "";
    size = (fileLength / 1024).toFixed(2);

    return parseInt(size);
  }

3: 截取  字符串 或者 数组

var slice = function (arrayLike, index) {
  return Array.prototype.slice.call(arrayLike, index)
}
slice('gdsjfhdsfd', 3) // ['j', 'f', 'h', 'd', 's', 'f', 'd']

slice([1,3,5,6,7,9,22], 3)  // [6, 7, 9, 22]

 4: 生成随机数/日志号

  // 生成随机数默认15位【日志号】
  traceLogId (n = 18) {
    let randomNum = []
    for (let i = 0; i < n - 13; i++) {
      randomNum.push(Math.floor(Math.random() * 10))
    }
    return (new Date().getTime()) + randomNum.join('')
  }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值