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.可以自己编辑弹出 ...
随机推荐
- Linux - rpm 软件包管理
rpm 是 Red-Hat Package Manager(rpm 软件包管理器)的缩写 rpm 的命名规则: 第一部分为 rpm 软件包的名称,第二部分是版本号,第三部分是版本发布次数,第四部分是软 ...
- python's twelth day for me
闭包: 内层函数对外层函数的变量(非全局变量)的引用. python 遇到闭包,有一个机制,会开辟一个空间,将闭包中的全部变量放入其中.且不会随着函数的结束而关闭. 闭包的完美体现:装饰器. 打印函数 ...
- 本人编写的一份前端vue面试题
说明,此题目本人自出,做过本人所在公司的前端面试题,在此共享给大家 1. 如何在vue组件中实现v-model的功能?(只需给出关键代码) 2. 简述你知道的生命周期函数和执行时机 3. 谈谈你对计算 ...
- Python Twisted网络编程框架与异步编程入门教程
原作出处:twisted-intro-cn 作者:Dave 译者:杨晓伟 luocheng likebeta 转载声明:版权归原作出处所有,转载只为让更多人看到这部优秀作品合集,如果侵权,请留言告知 ...
- export LD_LIBRARY_PATH 的使用
对linux不是很熟,之前只是听说过可以设置程序共享库位置也就是 使用 “export LD_LIBRARY_PATH” 今天用了用,感觉还挺不错,也很常用. 比如你编译了一个so 而这个so 同时又 ...
- OK6410之tftp下载内核,nfs…
原文地址:OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]作者:千山我独行 由于工作的平台也是嵌入式,差不多的平台,所以一直就没有把自己买过来的ok6410板子好好玩玩.以前一直都是 ...
- mac配置git mergetool为p4merge(2013笔记整理)
既有环境: 1)下载安装p4merge 2)安装git 下面是配置p4merge为git mergetool的步骤 1. /usr/local/bin下创建extMerge文件: $ cat > ...
- C99标准新特性的说明
C99标准新特性的说明 一.说明 ====== 这里的讨论的是C语言的国际标准,即国际标准化组织ISO,制定的C语言标准.历史上ISO制定过4个版本的C语言标准,他们分别是:C90(ISO/IEC ...
- (java基础)抽象类加泛型的理解
今天在群里问了个基础问题,挨喷了..这更加激起了我对知识的渴望.也在此铭记一下,将来有经验了要对刚入门的童鞋们严格点,简单的东西要自己看...唉,程序员何苦为难程序猿呢.. 接下来简单总结下这个万能的 ...
- 管理授权&管理决策&管理组织&管理目标
[管理授权] 1.如果一个管理者不明白为公司培养人的责任,就很可能成为公司的瓶颈.这个问题的解决在于让管理者学会“授权”,把大部分自己紧抓不放的事情下放给部门内其他人做. 2.为一件事负责和亲自做是两 ...