检测数据是不是除了symbol外的原始数据
1 | function isStatic(value) { |
检测数据是不是原始数据
1 | function isPrimitive(value) { |
判断数据是不是引用类型的数据 (例如: arrays, functions, objects, regexes, new Number(0),以及 new String(‘’))
1 | function isObject(value) { |
检查 value 是否是 类对象。 如果一个值是类对象,那么它不应该是 null,而且 typeof 后的结果是 “object”
1 | function isObjectLike(value) { |
获取数据类型,返回结果为 Number、String、Object、Array等
1 | function getRawType(value) { |
判断数据是不是Object类型的数据
1 | function isPlainObject(obj) { |
判断 value 是不是浏览器内置函数
内置函数toString后的主体代码块为 [native code] ,而非内置函数则为相关代码,所以非内置函数可以进行拷贝(toString后掐头去尾再由Function转)
1 | function isNative(value) { |
检查 value 是否为有效的类数组长度
1 | function isLength(value) { |
检查 value 是否是类数组
如果一个值被认为是类数组,那么它不是一个函数,并且value.length是个整数,大于等于 0,小于或等于 Number.MAX_SAFE_INTEGER。这里字符串也将被当作类数组。
1 | function isArrayLike(value) { |
检查 value 是否为空
如果是null,直接返回true;如果是类数组,判断数据长度;如果是Object对象,判断是否具有属性;如果是其他数据,直接返回false(也可改为返回true)
1 | function isEmpty(value) { |
记忆函数:缓存函数的运算结果
1 | function cached(fn) { |
横线转驼峰命名
1 | let camelizeRE = /-(\w)/g; |
驼峰命名转横线命名:拆分字符串,使用 - 相连,并且转换为小写
1 | let hyphenateRE = /\B([A-Z])/g; |
字符串首位大写
1 | function capitalize(str){ |
将属性混合到目标对象中
1 | function extend(to, _from) { |
对象属性复制,浅拷贝
1 | Object.assign = Object.assign || function(){ |
使用Object.assign
可以浅克隆一个对象:
1 | let clone = Object.assign({}, target) |
简单的深克隆可以使用JSON.parse()
和JSON.stringify()
,这两个api是解析json数据的,所以只能解析除symbol外的原始类型及数组和对象
1 | let clone = JSON.parse( JSON.stringify(target) ) |
克隆数据,可深度克隆
这里列出了原始类型,时间、正则、错误、数组、对象的克隆规则,其他的可自行补充
1 | function clone(value, deep){ |
识别各种浏览器及平台
1 | //运行环境是浏览器 |
获取浏览器信息
1 | function getExplorerInfo() { |
检测是否为PC端浏览器模式
1 | function isPCBroswer() { |
数组去重,返回一个新数组
1 | function unique(arr){ |
生成一个重复的字符串,有n个str组成,可修改为填充为数组等
1 | function repeat(str, n) { |
格式化时间
1 | function dateFormater(formater, t){ |
dateStrForma:将指定字符串由一种时间格式转化为另一种
from的格式应对应str的位置
1 |
|
根据字符串路径获取对象属性 : ‘obj[0].count’
1 | function getPropByPath(obj, path, strict) { |
获取Url参数,返回一个对象
1 | function GetUrlParam(){ |
base64数据导出文件,文件下载
1 |
|
全屏
1 | function toFullScreen(){ |
退出全屏
1 | function exitFullscreen(){ |
window动画
1 | window.requestAnimationFrame = window.requestAnimationFrame || |
检查数据是否是非数字值
1 | function _isNaN(v){ |
返回一个lower - upper之间的随机数
lower、upper无论正负与大小,但必须是非NaN的数据
1 | function random(lower, upper){ |
利用performance.timing进行性能分析
1 | window.onload = function(){ |
禁止某些键盘事件
1 | document.addEventListener('keydown', function(event){ |
禁止右键、选择、复制
1 | ['contextmenu', 'selectstart', 'copy'].forEach(function(ev){ |
数组扁平化
1 | function flattenDepth(array, depth = 1) { |
柯里化
一句话解释就是参数够了就执行,参数不够就返回一个函数,之前的参数存起来,直到够了为止 。
1 | function curry(func) { |
为元素添加on方法
1 | Element.prototype.on = Element.prototype.addEventListener; |
为元素添加trigger方法
1 | Element.prototype.trigger = function(type, data) { |
转义html标签
1 | function HtmlEncode(text) { |
HTML标签转义
1 | // HTML 标签转义 |
跨浏览器绑定事件
1 | function addEventSamp(obj, evt, fn) { |
加入收藏夹
1 | function addFavorite(sURL, sTitle) { |
提取页面代码中所有网址
1 | var aa = document.documentElement.outerHTML |
动态加载脚本文件
1 | function appendscript(src, text, reload, charset) { |
返回顶部的通用方法
1 | function backTop(btnId) { |
实现base64解码
1 | function base64_decode(data) { |
确认是否是键盘有效输入值
1 | function checkKey(iKey) { |
全角半角转换
1 | //iCase: 0全到半,1半到全,其他不转化 |
版本对比
1 | function compareVersion(v1, v2) { |
压缩CSS样式代码
1 | function compressCss(s) { |
获取当前路径
1 | var currentPageUrl = ""; |
字符串长度截取
1 | function cutstr(str, len) { |
时间日期格式转换
1 | Date.prototype.format = function(formatStr) { |
跨浏览器删除事件
1 | function delEvt(obj, evt, fn) { |
判断是否以某个字符串结束
1 | String.prototype.endWith = function(s) { |
返回脚本内容
1 | function evalscript(s) { |
格式化CSS样式代码
1 | function formatCss(s) { |
获取cookie值
1 | function getCookie(name) { |
获得URL中GET参数值
1 | // 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"] |
获取移动设备初始化大小
1 | function getInitZoom() { |
获取页面高度
1 | function getPageHeight() { |
获取页面scrollLeft
1 | function getPageScrollLeft() { |
获取页面scrollTop
1 | function getPageScrollTop() { |
获取页面可视高度
1 | function getPageViewHeight() { |
获取页面可视宽度
1 | function getPageViewWidth() { |
获取页面宽度
1 | function getPageWidth() { |
获取移动设备屏幕宽度
1 | function getScreenWidth() { |
获取网页被卷去的位置
1 | function getScrollXY() { |
获取URL上的参数
1 | // 获取URL中的某参数值,不区分大小写 |
检验URL链接是否有效
1 | function getUrlState(URL) { |
获取窗体可见范围的宽与高
1 | function getViewSize() { |
获取移动设备最大化大小
1 | function getZoom() { |
判断是否安卓移动设备访问
1 | function isAndroidMobileDevice() { |
判断是否苹果移动设备访问
1 | function isAppleMobileDevice() { |
判断是否为数字类型
1 | function isDigit(value) { |
是否是某类手机型号
1 | // 用devicePixelRatio和分辨率判断 |
判断是否移动设备
1 | function isMobile() { |
判断吗是否手机号码
1 | function isMobileNumber(e) { |
判断是否是移动设备访问
1 | function isMobileUserAgent() { |
判断鼠标是否移出事件
1 | function isMouseOut(e, handler) { |
判断是否Touch屏幕
1 | function isTouchScreen() { |
判断是否为网址
1 | function isURL(strUrl) { |
判断是否打开视窗
1 | function isViewportOpen() { |
加载样式文件
1 | function loadStyle(url) { |
替换地址栏
1 | function locationReplace(url) { |
解决offsetX兼容性问题
1 | // 针对火狐不支持offsetX/Y |
打开一个窗体通用方法
1 | function openWindow(url, windowName, width, height) { |
将键值对拼接成URL带参数
1 | export default const fnParams2Url = obj=> { |
去掉url前缀
1 | function removeUrlPrefix(a) { |
替换全部
1 | String.prototype.replaceAll = function(s1, s2) { |
resize的操作
1 | (function() { |
滚动到顶部
1 | // 使用document.documentElement.scrollTop 或 document.body.scrollTop 获取到顶部的距离,从顶部 |
设置cookie值
1 | function setCookie(name, value, Hours) { |
设为首页
1 | function setHomepage() { |
按字母排序,对每行进行数组排序
1 | function setSort() { |
延时执行
1 | // 比如 sleep(1000) 意味着等待1000毫秒,还可从 Promise、Generator、Async/Await 等角度实现。 |
判断是否以某个字符串开头
1 | String.prototype.startWith = function(s) { |
清除脚本内容
1 | function stripscript(s) { |
时间个性化输出功能
1 | /* |
全角转换为半角函数
1 | function toCDB(str) { |
半角转换为全角函数
1 | function toDBC(str) { |
金额大写转换函数
1 | function transform(tranvalue) { |
清除空格
1 | String.prototype.trim = function() { |
随机数时间戳
1 | function uniqueId() { |
实现utf8解码
1 | function utf8_decode(str_data) { |