常用的JS方法

常用的JS方法


一,判断当前元素是否是数组

1 isArray 原生方法判断

Array.isArray()

2 通过 toString 判断

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

3 通过 instanceof 判断判断

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

4 通过 constructor 判断

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

二,判断是否是对象

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

三,判断环境
1,判断是否安卓

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,判断是否为移动端

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

四,按需加载CSS与JS

/**
 * 按需加载js
 * @param {*} path
 */
function delayLoadJS(path) {
    if (!path) {
        return Promise.reject();
    }
    return new Promise((resolve, reject) => {
        let dom = null;
        const scripts = document.querySelectorAll('script');
        for (let item of 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.onload = null;
            };
            script.onerror = () => reject();
            document.body.appendChild(script);
        }
    });
}
/**
 * 按需加载css
 * @param {*} path
 */
function delayLoadCSS(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);
        }
    });
}
/**
 * 解决同时异步加载同一个文件的问题
 * @param {*} dom
 * @param {*} resolve
 */
function onload(dom, resolve) {
    const oldOnload = dom.onload;
    if (oldOnload) {
        dom.onload = () => {
            oldOnload();
            resolve();
        };
    } else {
        resolve();
    }
}

五,常用正则表达式
1,邮箱 QQ 网址 身份证 汉字 英文

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

//QQ
function isQQ(qq) {
    var r = /^[1-9]\d{4,10}$/;
    return r.test(qq);
}

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

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

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

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

六,对象的深拷贝
1,对象

// 简单粗暴,一步到位
JSON.parse(JSON.stringify(obj));

2,数组

可以用Array.slice(),Array.concat()ES6扩展运算符...等方法来实现
	// a标签
	<a href="javascript: history.back(-1)">返回上一页</a> 
	<a href="javascript:history.go(-1)">返回上一页</a> 
	<a href="javascript:history.go(-2)">返回前两页</a> 
	<a href="javascript:location.reload()">刷新当前页面</a> 
	<a href="javascript:" onclick="self.location=document.referrer;">返回上一页并刷新</a> 
	
	//js
	// 刷新当前页面
	window.location.Reload();
	self.location.reload();
	window.location.href = window.location.href; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值