js 封装常用方法
1. 获取数据类型
    function getType(params) {
      return Object.prototype.toString.call(params).slice(, -)
    }
2. 深拷贝
    function deepCopy(params) {
      var obj;
      if (typeof params === 'object') {
        if (Array.isArray(params)) {
          obj = [];
          for (var i = ; i < params.length; i++) {
            obj.push(arguments.callee(params[i]))
          }
        } else {
          obj = {};
          for (var c in params) {
            obj[c] = arguments.callee(params[c]);
          }
        }
      } else { return params; }
      return obj;
    }
3. 实现数字千分位
1)toLocaleString
    function toFormat(num) {
      num = Number(num);
      return num.toLocaleString();
    }
2)正则
    function toFormat(num) {
      num = num.toString();
      var t = /\B(?=(\d{})+(?!\d))/g;
      if (!!~num.indexOf('.')) {
        var arr = num.split('.');
        return (arr[] || '').replace(t, ',') + '.' + arr[];
      }
      return num.replace(t, ',')
    }
4. 查询url后面参数
1)循环
    function getParamsName(attr) {
      var url = location.href; // 'baidu.com?name=黎明&age=18&habit=basketball'
      var params = url.split('?')[];
      var paramsObj = {};
      if (params) {
        var paramsList = params.split('&') || [];
        for (var i = ; i < paramsList.length; i++) {
          var item = paramsList[i].split('=') || [];
          paramsObj[item[]] = item[];
        }
      }
      return decodeURIComponent(paramsObj[attr]);
    }
2)正则
    function getParamsName(attr) {
      let match = RegExp(`[?&]${attr}=([^&]*)`).exec(window.location.search)
      return match && decodeURIComponent(match[])
    }
5. 获取当前时间
    function getDate() {
      var date = new Date();
      var year = date.getFullYear(),
        month = date.getMonth() + ,
        day = date.getDate(),
        hour = date.getHours(),
        minute = date.getMinutes(),
        second = date.getSeconds();
      var fill = function (num) {
        num = num.toString();
        return num.padStart(, '') // 为个位数时 补充前面的零
      }
      var currentdate = year + '-' + fill(month) + '-' + fill(day) + ' ' + fill(hour) + ':' + fill(minute) + ':' + fill(second);
      return currentdate;
    }
6. 数组去重
1) es5
    function uniq(arr) {
      if (Array.isArray(arr)) {
        return arr.filter((item, index, array) => array.indexOf(item) === index);
      }
    }
2)es6
    function uniq(arr) {
      return [...new Set(arr)]
    }
7. 计算字符串出现次数最多的字母
    function count(str) {
      var obj = {}, max = { key: '', val:  };
      for (var i = ; i < str.length; i++) {
        var item = str[i];
        !obj[item] ? obj[item] =  : obj[item]++;
        if (obj[item] > max.val) {
          max.val = obj[item];
          max.key = item;
        }
      }
      return max;
    }
未完待续...
js 封装常用方法的更多相关文章
- js 的常用方法和对象
		
每日分享: 加油!你一定可以!你是最牛逼的!!!-------------------------------------------------------------------------- - ...
 - 原生JS封装Ajax插件(同域&&jsonp跨域)
		
抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
 - 使用NW.js封装微信公众号菜单编辑器为桌面应用
		
开发微信公众号的朋友都会遇到一个常见的需求就是修改自定义菜单,如果每个人都去开发这个不经常使用的功能确实有点浪费时间.前段时间在github上找到一个仿企业号的菜单编辑界面,结合微信的C# SDK开发 ...
 - 用jQuery基于原生js封装的轮播
		
我发现轮播在很多网站里面都用到过,一个绚丽的轮播可以为网页增色不少,最近闲来无事,也用原生js封装了一个轮播,可能不像网上的插件那么炫,但是也有用心去做.主要用了闭包的思想.需要传递的参数有:图片地址 ...
 - 原生JS封装简单动画效果
		
原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...
 - 使用原生JS封装Ajax
		
使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () ...
 - js封装的方法
		
1.JS封装就是尽量把使用的方式简单化,内部逻辑和使用解耦.通俗的说就是使用的时候只需要知道参数和返回值,其他条件尽量不要使用人员进行设置. 2.JS封装的方法有函数方式.对象的方式.闭包的方式. 举 ...
 - JS封装cookie操作函数实例(设置、读取、删除)
		
本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
 - 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
		
原生Js封装的弹出框-弹出窗口-页面居中-多状态可选 实现了一下功能: 1.title可自定义 可拖拽 2.width height可以自定义 3.背景遮罩和透明度可以自定义 4.可以自己编辑弹出 ...
 
随机推荐
- Angular4中利用promise异步加载gojs
			
GoJS是一个实现交互类图表(比如流程图,树图,关系图,力导图等等)的JS库 gojs提供了angular的基本例子,不过是离线版 https://github.com/NorthwoodsSoftw ...
 - rpm yum 等命令无响应的解决方法
			
yum 安装查询任何东西, rpm 安装查询任何东西,执行后无任何反应,直接卡住,也没任何错误信息给出,只能杀掉进程 # yum install XXXX # yum clean all # rpm ...
 - ffmpeg函数介绍
			
本文对在使用ffmpeg进行音视频编解码时使用到的一些函数做一个简单介绍,我当前使用的ffmpeg版本为:0.8.5,因为本人发现在不同的版本中,有些函数名称会有点小改动,所以在此有必要说明下ffmp ...
 - openGL 纹理05
			
纹理(Texture) 为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的每个顶点各自对应纹理的哪个部分. 这样每个顶点就会关联着一个纹理坐标(Texture Coordinate) 用来标 ...
 - 动态规划——最长不下降子序列(LIS)
			
最长不降子序列是这样一个问题: 下面介绍动态规划的做法. 令 dp[i] 表示以 A[i] 结尾的最长不下降序列长度.这样对 A[i] 来说就会有两种可能: 如果存在 A[i] 之前的元素 A[j] ...
 - jquery slideDown效果
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
 - 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 6_Logistic Regression 逻辑回归
			
Lecture6 Logistic Regression 逻辑回归 6.1 分类问题 Classification6.2 假设表示 Hypothesis Representation6.3 决策边界 ...
 - id 和 instancetype 方法的区别
			
首先明确 id 和 instancetype 都是万能指针,都能指向一个对象:(instancetype == id == 万能指针 == 指向一个对象) 主要区别亮点: 1. id 在编译时候不能判 ...
 - Newtonsoft 序列化和反序列化特殊处理
			
1>序列化,时间格式化处理 JsonConvert.SerializeObject(Iar, new JsonSerializerSettings() { DateFormatString = ...
 - vue.js的生命周期 及其created和mounted的部分
			
网上很多人有所总结,转载自: https://segmentfault.com/a/1190000008570622 关于created和mounted的部分,也可以参考: https://blo ...