一,检测是否是Array

1,通过constructor检测

function isArray(value){
return value && typeof value === 'object' && value.constructor === Array;
}

2,通过instanceof检测

function isArray(value){
return value && typeof value === 'object' && value instanceof Array;
}

3,通过toString检测

function isArray(value){
return value && typeof value === 'object' && Object.prototype.toString.call(value) === '[object Array]' ;
}

4,通过原生方法

Array.isArray(value);

二,检测是否是Object

function isObject(value){
return value != null && typeof value === 'object' && Object.prototype.toString.call(value) === '[object Object]';
}

三,检测环境

1,检测是否是Android

function isAndroid(){
return /Android/i.test(navigator.userAgent) || /Linux/i.test(navigator.appVersion);
}

2,检测是否是ios

function isIos(){
return /ipad|iphone/i.test(navigator.userAgent);
}

3,检测是否是safari

function isSafari(){
return /msie|applewebkit.+safari/i.test(navigator.userAgent);
}

4,检测是否是微信

function isWeiXin(){
return /MicroMessenger/i.test(navigator.userAgent);
}

5,检测是否是Mobile

Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobi
function isMobile(){
return /Android|webOS|iphone|ipad|ipod|BlackBerry|IEMobile|Opera Mini|Mobile/.test(navigator.userAgent) && screen.width<500;
}

四,按需加载javascript与css

1,加载javascript

/**
* @param path
*/
function loadJS(path){
if(!path){
return Promise.reject();
}
return new Promise((resolve,reject)=>{
let dom = null;
const scripts = document.querySelectorAll('script');
for(let item in scripts){
if(new RegExp(path).test(item.src)){
dom = item;
onload(dom,()=>resolve());
return;
}
}
if(!dom){
const script = document.createElement('script');
script.src = path;
script.onload = (){
resolve();
script.onolad = null;
}
script.onerror = ()=>reject();
document.body.appendChild(script);
}
});
}

2,加载css

/**
* @param path
*/
function loadCSS(path) {
if (!path) {
return Promise.reject();
}
return new Promise((resolve, reject) => {
let dom = null;
let links = document.querySelectorAll('link');
for (let item of links) {
if (new RegExp(path).test(item.href)) {
dom = item;
onload(dom, resolve);
return;
}
}
if (!dom) {
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = path;
link.onload = () => {
resolve();
link.onload = null;
};
link.onerror = () => reject();
document.head.appendChild(link);
}
});
}

3,解决异步加载同一个文件的问题

/**
* @param dom
* @param resolve
*/
function onload(dom, resolve) {
const oldOnload = dom.onload;
if (oldOnload) {
dom.onload = () => {
oldOnload();
resolve();
};
} else {
resolve();
}
}

五,常用正则表达式

1,邮箱

function isEmail(email){
let p = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return p.test(email);
}

2,QQ

function isQQ(qq){
let p = /^[0-9]\d{4,10}/;
return p.test(qq);
}

3,网址

function isUrl(url) {
let p = /^(((ht)tps?):\/\/)?[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;
return p.test(url);
}

4,身份证

function isCard(str) {
return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
}

5,中文

function isChinese(str) {
return /^[\u4e00-\u9fa5]+$/.test(str);
}

6,英文

function isEnglish(str) {
return /^[a-zA-Z]*$/.test(str);
}

六,对象深拷贝

JSON.parse(JSON.stringify(obj));

最新文章

  1. vim + ctags + taglist配置和使用
  2. JavaScript 嵌套 书名号 查询
  3. 花几分钟搭建一个自已的GIT服务器
  4. 说说这篇「我为什么从python转向go
  5. 详解jQ的support模块
  6. jquery replace用法汇总
  7. KingBlog记录
  8. 关于Block的copy和循环引用的问题
  9. UVA 11624 Fire!(广度优先搜索)
  10. MVC&amp;WebForm对照学习:文件上传(以图片为例)
  11. android &amp; Linux uevent机制
  12. 学习Swift -- 数组(Array) - 持续更新
  13. poj 1050 To the Max (简单dp)
  14. linux下搭建svn服务器
  15. jQuery键盘控制方法,以及键值(keycode)对照表
  16. HDU2276 - Kiki &amp;amp; Little Kiki 2(矩阵高速幂)
  17. Missing artifact net.sf.json-lib:json-lib:jar:2.4错误和Eclipse安装Maven插件错误
  18. svn 更新
  19. Reg2Bat_By Slore(生成同名bat文件,支持XP WIN7 WIN7X64).vbs
  20. 爬虫实例——爬取煎蛋网OOXX频道(反反爬虫——伪装成浏览器)

热门文章

  1. ---搭建springMvc框架,希望对初学者有所参考
  2. 【题解】Beads
  3. adb]ADB server didn&#39;t ACK
  4. runtime之归档和解档
  5. Android 混淆总结(直接copy)(转)
  6. Oracle 19C的下载和安装部署
  7. demo_service
  8. 【基础】Maven生命周期
  9. Python--模块之sys模块、logging模块、序列化json模块、序列化pickle模块
  10. docker监控方案实践(cadvisor+influxdb+grafana)