File对象转base64
代码语言:javascript复制function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}
不同时间显示不同的欢迎语
代码语言:javascript复制function welcomes() {
let hour = (new Date).getHours();
let wel = "";
switch (true) {
case hour === 1:
wel = "凌晨1点了!该休息了!";
break;
case hour === 2:
wel = "工作狂,还在忙嘛?";
break;
case hour === 3:
wel = "午夜3点!你决定不睡觉了嘛??";
break;
case hour === 4:
wel = "凌晨4点了,您的工作精神一定要上报党中央!";
break;
case hour === 5:
wel = "5点多了,您是刚起床还是还没睡啊?";
break;
case hour === 6:
wel = "早上好!新一天又开始啦!有什么打算呢?";
break;
case hour === 7:
wel = "吃早饭了嘛?";
break;
case(hour === 8) || (hour === 9) || (hour === 10):
wel = "祝您工作愉快!";
break;
case hour === 11:
wel = "快中午啦,准备下班了嘛?";
break;
case hour === 12:
wel = "中午好!你吃饭了嘛?";
break;
case(hour === 13) || (hour === 14):
wel = "准备准备要上班了!";
break;
case(hour === 15) || (hour === 16) || (hour === 17):
wel = "下午好!";
break;
case(hour === 18) || (hour === 19):
wel = "该看新闻联播了!";
break;
case(hour === 20) || (hour === 21) || (hour === 22):
wel = "休息下,找个电影看看睡觉吧?";
break;
case(hour === 23):
wel = "不早了,快休息吧?";
break;
case(hour === 0):
wel = "午夜时分,你可要注意身体呢!";
break;
default:
wel = "生活还得继续,加油!";
break;
}
return hour '点了,' wel;
}
限制函数调用次数
代码语言:javascript复制function transformer(func) {
let i = 3;
return function (...args) {
const context = this;
if (i > 0) {
i--;
return func.apply(context, args);
} else {
return;
}
}
}
深度判断不同对象是否一致
代码语言:javascript复制/*判断对象是否一致*/
function isObjectValueEqual(a, b) {
/*取对象a和b的属性名*/
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
/*判断属性名的length是否一致*/
if (aProps.length != bProps.length) {
return false;
}
/*循环取出属性名,再判断属性值是否一致*/
for (var i = 0; i < aProps.length; i ) {
var propName = aProps[i];
if (a[propName] !== b[propName]) {
return false;
}
}
return true;
}
解析秒数所对应的时分秒数量
代码语言:javascript复制/**
* 获取时分秒
* @param {Number} seconds 总秒数
* @param {String} dateFormat 返回的日期格式,默认为'H:i:s'
*/
function getSFM(seconds, dateFormat = 'H:i:s') {
var obj = {};
obj.H = parseInt(Math.floor(seconds / 3600));/*得到小时数*/
obj.i = parseInt(Math.floor((seconds - obj.H * 3600) / 60));
obj.s = parseInt(Math.floor(seconds - obj.H * 3600 - obj.i * 60));
if (obj.H < 10) {
obj.H = '0' obj.H;
}
if (obj.i < 10) {
obj.i = '0' obj.i;
}
if (obj.s < 10) {
obj.s = '0' obj.s;
}
/*解析*/
var rs = dateFormat.replace('H', obj.H).replace('i', obj.i).replace('s', obj.s);
return rs;
}
JS对象转POST参数
代码语言:javascript复制/*将对象转为url参数*/
function urlEncode(param, key, encode) {
if (param == null) return '';
var paramStr = '';
var t = typeof (param);
if (t == 'string' || t == 'number' || t == 'boolean') {
paramStr = '&' key '=' ((encode == null || encode) ? encodeURIComponent(param) : param);
} else {
for (var i in param) {
var k = key == null ? i : key (param instanceof Array ? '[' i ']' : '.' i);
paramStr = All.urlEncode(param[i], k, encode);
}
}
return paramStr;
},
获取链接内GET参数的对象
代码语言:javascript复制/*获取get参数的方法*/
function getQueryVariable() {
let query = window.location.search.substring(1);
let key_values = query.split("&");
let params = {};
key_values.map(key_val => {
let key_val_arr = key_val.split("=");
params[key_val_arr[0]] = key_val_arr[1];
});
return params;
}
深度递归null转空字符串
代码语言:javascript复制 /*null转空字符串*/
null2str(data) {
if (typeof data != 'object' || data === null || data === 'null') {
data = '';
return data;
} else {
for (let x in data) {
if (data[x] === null || data[x] === 'null') { /*如果是null 把直接内容转为 ''*/
data[x] = '';
} else {
if (Array.isArray(data[x])) { /*是数组遍历数组 递归继续处理*/
data[x] = data[x].map(z => {
return null2str(z);
});
}
if (typeof (data[x]) === 'object') { /*是json 递归继续处理*/
data[x] = null2str(data[x])
}
}
}
return data;
}
}
可编辑元素粘贴纯文本
代码语言:javascript复制/* 绑定元素的粘贴事件 */
function (e) {
// 阻止默认粘贴
e.preventDefault();
// 粘贴事件有一个clipboardData的属性,提供了对剪贴板的访问
// clipboardData的getData(fomat) 从剪贴板获取指定格式的数据
var text = e.clipboardData.getData('text/plain');
// 插入
document.execCommand("insertText", false, text);
});
Object.create(null)
代码语言:javascript复制Object.create(null)
传入null当做参数,创建的对象不会有原型,也不会有Object 原型对象的任何属性(例如toString,hasOwnProperty等)
Object.create(null)可以创建一个干净且高度可定制的对象当做数据字典,进行循环取用,可以提高循环效率。
如果对象有原型链,那便会在循环的时候去循环它的各个属性和方法,效率则会降低