常用Javascript方法
一,检测是否是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));
常用Javascript方法的更多相关文章
- JavaScript中正则表达式判断匹配规则以及常用的方法
JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...
- JavaScript常用工具方法
JavaScript常用工具方法 1.日期格式化 2.将日期字符串转换为Date,字符串格式为(yyyy-mm-dd hh:mm:ss) 3.JS获取当天00:00:00时间和23:59:59的时间 ...
- JS常用校验方法(判断输入框是否为空,数字,电话,邮件,四舍五入等)
JS常用校验方法: 1.判断输入框是否为空,为空时弹出提示框 2.关闭窗口 3.检查输入字符串是否为数字 4.强制把大写转换成小写 5.手机号码校验,长度为11位数字. 6.电子邮件校验 7.电话号码 ...
- python_json常用的方法
1. 什么是JSON? JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端 ...
- js中关于string的一些常用的方法
最近总结了一些关于string中的常用方法, 其中大部分的方法来自于<JavaScript框架设计>这本书, 如果有更好的方法,或者有关于string的别的常用的方法,希望大家不吝赐教. ...
- jQuery常用工具方法
前面的话 jQuery提供一些与元素无关的工具方法,不必选中元素,就可以直接使用这些方法.如果理解原生javascript的继承原理,那么就能理解工具方法的实质.它是定义在jQuery构造函数上的方法 ...
- JS 数组常用的方法
数组常用的方法: x.toString()方法:任何对象都有toString方法. 将任何对象转为字符串. 一般不主动调用,系统在需要时自动调用 x.valueOf()方法:同toStr ...
- jQuery常用属性方法大全 attr(),val()
@@@@属性篇: 写作本篇文章的意义:jQuery的教程千千万,却没有英文版的API讲的系统.到位,一些话用中文翻译过来味道就变了,所以我将英文版的API的一些常用的方法单独提出来放在这里,并用自己的 ...
- jQuery 常用核心方法
jQuery 常用核心方法 .each() 遍历一个jQuery对象,为每个匹配元素执行一个函数 $('p').each(function(idx,node){ $(node).text(idx + ...
随机推荐
- 刚安装的程序要卸载,如何Ubuntu查看程序安装记录
如果新装一个程序,突然发现需要卸载,又忘记了程序名字,怎么解决呢? /var/log/apt/history.log /var/log/apt/term.log /var/log/aptitude 看 ...
- json模块 pickle 模块 collections 模块 openpyxl 模块
json模块 json 模块是一个系列化模块 一个第三方的特殊数据格式 可以将python数据类型----> json 数据格式 ----> 字符串 ----> 文件 其他语言想要使 ...
- [fw]Linux 的 time 指令
Linux 的 time 指令 Linux 有個很有意思的 time 指令,可以用來查看另一個指令的執行時間,例如執行 time helloworld 會顯示 helloworld 這支程式的執行 ...
- kubernetes里面有时候centos源用不了
kubernetes里面有时候centos源用不了,快速配一个阿里云的源. mkdir /etc/yum.repos.d/yangback;mv /etc/yum.repos.d/* /etc/yum ...
- C#驱动mysql明明数值不为空却一直说DBNull.Value的诡异情况
最近遇见了一个很诡异的情况,就是当我们关联表查询时,副表如果有bit类型的字段的话,C#驱动读取该列时就会抛出“DBNull.Value不能转换为其他类型”的异常,但是我们如果拿出sql语句单独查询的 ...
- h5py库
参考文献:http://docs.h5py.org/en/latest/high/dataset.html h5py文件存放数据集(dataset)和组(group). dataset类似数组类的数据 ...
- An Easy Introduction to CUDA C and C++
An Easy Introduction to CUDA C and C++ This post is the first in a series on CUDA C and C++, which i ...
- js调用浏览器
定义和用法 open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口. 语法 window.open(URL,name,specs,replace) 参数 说明 URL 可选.打开指定的页面 ...
- chroot()使用
好多的程序,都有使用chroot来是程序chroot到一个目录下面,来保护文件系统,今天在看snort代码的时候,看到了实现,就贴出一个测试程序来,实际上是比较简单的. chroot()在lin ...
- BZOJ 3207: 花神的嘲讽计划Ⅰ(莫队+哈希)
传送门 解题思路 刚开始写了个莫队+哈希+\(map\)的\(O(n\sqrt(n)log(n)\)的辣鸡做法,\(T\)飞了.后来看了看别人博客发现其实并不用拿\(map\)当桶存那些哈希值.因为只 ...