zoukankan      html  css  js  c++  java
  • javascript一些实用的方法

    判断数据类型

     1 function isType(type) {
     2   return function(obj) {
     3     return {}.toString.call(obj) == "[object " + type + "]"
     4   }
     5 }
     6 
     7 var isObject = isType("Object");
     8 var isString = isType("String");
     9 var isArray = isType("Array");
    10 var isFunction = isType("Function");
    11 var isUndefined = isType("Undefined");
    12 
    13 //使用方法
    14 isString('sss');   //true

    判断是否是PC端

     1 function isPC() {
     2   var userAgentInfo = navigator.userAgent, Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'],
     3        flag = true;
     4   for (var i = 0; i < Agents.length; i++) {
     5       if (userAgentInfo.indexOf(Agents[i]) > 0) {
     6          flag = false;
     7            break;
     8         }
     9     }
    10     return flag;
    11 }
    12 
    13 //使用方法
    14 isPC();      //true为pc端

    判断是否微信浏览器

    1 function isWX() {
    2   var ua = window.navigator.userAgent.toLowerCase();
    3   return ua.match(/MicroMessenger/i) == 'micromessenger';
    4 }
    5 
    6 //使用方法
    7 isWX();    //true为微信浏览器

    生成随机字符串(可指定长度,默认32)

     1 function randomNumber(len) {
     2     len = len || 32;
     3     var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz12345678';    //默认去掉了容易混淆的字符
     4     var maxPos = chars.length,
     5         pwd = '';
     6     for (var i = 0; i < len; i++) {
     7         pwd += chars.charAt(Math.floor(Math.random() * maxPos));
     8     }
     9     return pwd;
    10 }
    11 
    12 //使用方法
    13 randomNumber(8);    //可用于文件路径随机数

    生成唯一标识GUID(订单号等使用)

     1 function generateUUID() {
     2     var d = new Date().getTime();
     3     var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
     4         var r = (d + Math.random() * 16) % 16 | 0;
     5         d = Math.floor(d / 16);
     6         return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
     7     });
     8     return uuid;
     9 };
    10 
    11 // 使用方法
    12 generateUUID();   //需要唯一标识时可用

    获取网址的参数值(单个值)

    function getQueryString(name) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
        var r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return unescape(r[2]);
        }
        return null;
    }

    // http://xxxx.com/?name=hehe
    getQueryString("name");    //hehe

    获取网址的参数值(返回所有参数为JSON数据)

    function GetUrlParam(){
        let url = document.location.toString();
        let arrObj = url.split("?");
        let params = Object.create(null)
        if (arrObj.length > 1){
            arrObj = arrObj[1].split("&");
            arrObj.forEach(item=>{
                item = item.split("=");
                params[item[0]] = item[1]
            })
        }
        return params;
    }
    // ?a=1&b=2&c=3 ==> {a: "1", b: "2", c: "3"}

    数组去重

    // 利用对象属性名不能重复
    function
    toRepeat(a, b){ let arr = a.concat(b); let result = []; let obj = {}; for (let i of arr) { if (!obj[i]) { result.push(i) obj[i] = 1 } } return result; }

    // ES6 方法 利用new Set()的数组元素唯一性
    function distinct(a, b) {
        return Array.from(new Set([...a, ...b]))
    }

    去除字符串空格

    // type 1-所有空格,2-前后空格,3-前空格,4-后空格
    function getTrim(str, type){
        switch () {
            case 1: return str.replace(/s+/g, "");
            case 2: return str.replace(/(^s*)|(s*$)/g, "");
            case 3: return str.replace(/(^s*)/g, "");
            case 4: return str.replace(/(s*$)/g, "");
            default: return str;
        }
    }
    
    // 不得不说,正则是真的好用

    格式化时间

    function dateFormater(formater, t){
        let date = t ? new Date(t) : new Date(),
            Y = date.getFullYear() + '',
            M = date.getMonth() + 1,
            D = date.getDate(),
            H = date.getHours(),
            m = date.getMinutes(),
            s = date.getSeconds();
        return formater.replace(/YYYY|yyyy/g,Y)
            .replace(/YY|yy/g,Y.substr(2,2))
            .replace(/MM/g,(M<10?'0':'') + M)
            .replace(/DD/g,(D<10?'0':'') + D)
            .replace(/HH|hh/g,(H<10?'0':'') + H)
            .replace(/mm/g,(m<10?'0':'') + m)
            .replace(/ss/g,(s<10?'0':'') + s)
    }
    // dateFormater('YYYY-MM-DD HH:mm', t) ==> 2019-06-26 18:30
    // dateFormater('YYYYMMDDHHmm', t) ==> 201906261830
    // 转换时间格式
    '2019年06月28日'.replace(/(d{4}).(d{1,2}).(d{1,2}).+/mg, '$1-$2-$3') ===> 2019-06-28

    '2019-06-28'.replace(/(d{4}).(d{1,2}).(d{1,2}).+/mg, '$1年$2月$3日') ===> 2019年06月28日

    禁止右键、选择、复制

    ['contextmenu', 'selectstart', 'copy'].forEach(function(ev){
        document.addEventListener(ev, function(event){
            return event.returnValue = false
        })
    });

    一部分是项目中遇到的问题,一部分是网上收集的方法

    -- 时间问题,待续 --

  • 相关阅读:
    Call KernelIoControl in user space in WINCE6.0
    HOW TO:手工删除OCS在AD中的池和其他属性
    关于新版Windows Server 2003 Administration Tools Pack
    关于SQL2008更新一则
    微软发布3款SQL INJECTION攻击检测工具
    HyperV RTM!
    OCS 2007 聊天记录查看工具 OCSMessage
    CoreConfigurator 图形化的 Server Core 配置管理工具
    OC 2007 ADM 管理模板和Live Meeting 2007 ADM 管理模板发布
    Office Communications Server 2007 R2 即将发布
  • 原文地址:https://www.cnblogs.com/wangjishu/p/11152828.html
Copyright © 2011-2022 走看看