3、常用函数封装

// �ж�һ��ʵ�������� �Ƿ�������ԭ�Ͷ�������

function hasPrototypeProperty(obj, pro) {

    //  hasOwnProperty  in

    if (!obj.hasOwnProperty(pro) && (pro in obj)) {

        return true;

    }

    return false;

}

// js��ȡurl�IJ���

// 获取url中的参数

function getQueryString(name) {

    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

    var r = window.location.search.substr(1).match(reg);

    if (r != null) return decodeURI(r[2]);

    return null;

}

function returnNoSpace(str) {

    return str.replace(/\s+/g, ' ');

}

// 兼容性滚动条

document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop

var arr = [{

        isb: false,

        name: "aaa"

    },

    {

        isb: true,

        name: "bbb"

    },

    {

        isb: false,

        name: "ccc"

    }

];

/*

filter: 检测数值元素,并返回符合条件所有元素的数组。

params:function(item 每一项  index 索引 thisArr 数组本身)

return:返回 function里的每一项的返回值为ture的新数组

*/

// var arr1=arr.filter(function(item,index,thisArr){

//    return item.isb;

// })

/*

every 检测数值元素的每个元素是否都符合条件

array.every(function(currentValue,index,arr), thisValue)

thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。

如果省略了 thisValue ,"this" 的值为 "undefined"

*/

// var index=0;

// var arr1=arr.every(function(item,index){

//    index++;

//    console.log(index);

//    return item.isb;

// })

/*

map:方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

array.map(function(currentValue,index,arr), thisValue)

*/

// var arr1=arr.map(function(item,index){

//    return item.name+ " === ";

// });

// push 往屁股添加一个值 返回数组的长度 4= arr.push(d)  arr= [a, b, c, d]

// pop  从屁股移除一个值 返回被删除的值 c= arr.pop()  arr= [b, c]

// unshift 从头部添加一个值 返回数组的长度 4= arr.unshift(0) arr= [0, a, b, c]

// shift 从头部删除一个值 返回被删除的值  a= arr.shift() arr= [b, c]

// 屏幕适配

function whatScreen() {

    var width = document.querySelector("html").offsetWidth;

    var title = document.querySelector("title");

    if (width <= 768) {

        title.innerHTML = "极小屏幕-" + width;

    } else if (width > 768 && width <= 992) {

        title.innerHTML = "小屏幕-" + width;

    } else if (width > 992 && width <= 1200) {

        title.innerHTML = "普通屏幕-" + width;

    } else if (width > 1200) {

        title.innerHTML = "大屏幕-" + width;

    }

}

// 将超出行数的部分 变成 ...

.line - 2 {

    display: -webkit - box;

    overflow: hidden;

    white - space: normal!important;

    text - overflow: ellipsis;

    word - wrap: break -word; -

    webkit - line - clamp: 2; -

    webkit - box - orient: vertical

}

// 将超出行数的部分 变成 ...  $C表示内容有几行

@mixin ellipse($c) {

    display: -webkit - box;

    overflow: hidden;

    white - space: normal!important;

    text - overflow: ellipsis;

    word - wrap: break -word; -

    webkit - line - clamp: $c; -

    webkit - box - orient: vertical;

}

// 分页逻辑

// (QueryObj.page-1)*QueryObj.pageSize+i+1)

function show() {

    let x = 1,

        up = !1;

    setInterval(() => {

        (75 === x || 1 === x) && (up = !up), up ? x++ : x--, console.log(`%c${`■`.repeat(x)}`, `color: hsl(${2*x}, 100%, 50%)`)

    }, 10);

}

// 多行溢出显示省略号

overflow: hidden;

text - overflow: ellipsis;

display: -webkit - box; -

webkit - line - clamp: 2; -

webkit - box - orient: vertical;

增大背景图片的响应区域

1 给元素添加 box - sizing: border - box;

2 给元素添加 背景原点和背景裁切 content - box

3 动态增大padding

// 手机正则

function checkPhone(phone) {

    if (!(/^1[34578]\d{9}$/.test(phone))) {

        return false;

    } else {

        return true;

    }

}

// 邮箱正则

function checkEmail(myemail) {

    var myReg = /^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;

    if (myReg.test(myemail)) {

        return true;

    } else {

        return false;

    }

}

// 创建

var evt = document.createEvent("HTMLEvents");

// 初始化,事件类型,是否冒泡,是否阻止浏览器的默认行为

evt.initEvent("tap", false, false);

// 触发

div.dispatchEvent(evt);

// 添加全局导航路由守卫--全局路由守卫

router.beforeEach((to, from, next) => {

    // 如果用户请求的是登录页面,则next,如果用户请求的页面是需要登录的页面,则需要跳转到登录页面

    // console.log(to)

    // 获取token值

    var token = localStorage.getItem('mytoken')

    // 先判断是否有token,如果有则next

    if (token) {

        next()

    } else {

        // 如果没有token,并且请求的是login页面,则next,否则重定向到Login页面

        if (to.path === '/login') {

            next()

        } else {

            next({

                name: 'Login'

            })

        }

    }

})

// 设置拦截器

// config可以设置请求头,通过headers属性

axios.interceptors.request.use(function (config) {

    // Do something before request is sent

    // 1、获取token

    var token = localStorage.getItem('mytoken')

    if (token) {

        // 写入请求头

        config.headers['Authorization'] = token

    }

    return config

}, function (error) {

    // Do something with request error

    return Promise.reject(error)

})

你可能感兴趣的:(3、常用函数封装)