105 lines
2.2 KiB
JavaScript
105 lines
2.2 KiB
JavaScript
|
// 获取路由URL参数
|
|||
|
function urlSearch(parmas) {
|
|||
|
let href = window.location.href
|
|||
|
let query = href.substring(href.indexOf('?')+1);
|
|||
|
let vars = query.split("&");
|
|||
|
for (var i = 0; i < vars.length; i++) {
|
|||
|
let pair = vars[i].split("=");
|
|||
|
if(pair[0] == parmas){
|
|||
|
return pair[1];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 深拷贝
|
|||
|
function deepClone(obj){
|
|||
|
let objClone = Array.isArray(obj)?[]:{};
|
|||
|
if(obj && typeof obj === "object"){
|
|||
|
for(key in obj){
|
|||
|
if(obj.hasOwnProperty(key)){
|
|||
|
// 判断ojb子元素是否为对象,如果是,递归复制
|
|||
|
if(obj[key] && typeof obj[key] === "object"){
|
|||
|
objClone[key] = deepClone(obj[key]);
|
|||
|
}else{
|
|||
|
// 如果不是,简单复制
|
|||
|
objClone[key] = obj[key];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return objClone;
|
|||
|
}
|
|||
|
|
|||
|
// 防抖
|
|||
|
function _debounce(fn, delay = 300) {
|
|||
|
var timer = null;
|
|||
|
return function () {
|
|||
|
var _this = this;
|
|||
|
var args = arguments;
|
|||
|
if (timer) clearTimeout(timer);
|
|||
|
timer = setTimeout(function () {
|
|||
|
fn.apply(_this, args);
|
|||
|
}, delay);
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
// 节流
|
|||
|
function _throttle(fn,delay = 1000){
|
|||
|
var lastTime, timer, delay;
|
|||
|
return function(){
|
|||
|
var _this = this;
|
|||
|
var args = arguments;
|
|||
|
var nowTime = Date.now();
|
|||
|
if(lastTime && nowTime - lastTime < delay){
|
|||
|
if (timer) clearTimeout(timer);
|
|||
|
timer = setTimeout(function(){
|
|||
|
lastTime = nowTime;
|
|||
|
fn.apply(_this,args);
|
|||
|
},delay)
|
|||
|
}else{
|
|||
|
lastTime = nowTime;
|
|||
|
fn.apply(_this,args);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
* 下划线转换驼峰
|
|||
|
*/
|
|||
|
function underlineToHump(str) {
|
|||
|
// 如果首字母是_,执行 replace 时会多一个_,这里需要去掉
|
|||
|
if(str.slice(0,1) === '_'){
|
|||
|
str = str.slice(1);
|
|||
|
}
|
|||
|
return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {
|
|||
|
return $1 + $2.toUpperCase();
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
* 驼峰转换下划线
|
|||
|
*/
|
|||
|
function humpToUnderline(str) {
|
|||
|
let temp = str.replace(/[A-Z]/g, function (match) {
|
|||
|
return "_" + match.toLowerCase();
|
|||
|
});
|
|||
|
// 如果首字母是大写,执行replace时会多一个_,这里需要去掉
|
|||
|
if(temp.slice(0,1) === '_'){
|
|||
|
temp = temp.slice(1);
|
|||
|
}
|
|||
|
return temp;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
export{
|
|||
|
urlSearch,
|
|||
|
deepClone,
|
|||
|
_debounce,
|
|||
|
_throttle,
|
|||
|
underlineToHump,
|
|||
|
humpToUnderline,
|
|||
|
}
|