获取某个月的第一天和最后一天

  1. /**
  2. * @param {Date} cur,时间对象数据
  3. */
  4. function getFirstDay(cur){
  5. let firstDay = new Date();
  6. if(cur) firstDay = cur;
  7. firstDay = new Date(firstDay.getFullYear() + '/' + (firstDay.getMonth()+1) + '/1');
  8. return firstDay;
  9. }
  10. // 核心是setDate方法,0为上个月最后一天,(1~31)为本月某一天
  11. function getLastDay(cur){
  12. let lastDay = new Date();
  13. if(cur) lastDay = cur;
  14. lastDay.setMonth(lastDay.getMonth() + 1);
  15. lastDay.setDate(0);
  16. return lastDay;
  17. }
  18. // 使用
  19. getLastDay(new Date("2020/2/5")) // Sat Feb 29 2020 00:00:00 GMT+0800 (中国标准时间)

生成一周时间

  1. function getWeekTime(){
  2. return [...new Array(7)].map((item,i) => new Date(Date.now()+i*8.64e7).toLocaleDateString())
  3. }

类型判断

判断核心使用Object.prototype.toString.call

  1. function checkType(target, type){
  2. let targetType = Object.prototype.toString.call(target).slice(8,-1).toLowerCase();
  3. return targetType === type.toLowerCase();
  4. }
  5. // 使用
  6. checkType([], 'Array') // true
  7. checkType(/\d/, 'RegExp') // true
  8. checkType(new Date(), 'Date') // true
  9. checkType(function(){}, 'Function') // true
  10. checkType(Symbol(1), 'Symbol') // true

白屏时间

Web Performance API允许网页访问某些函数来测量网页和Web应用程序的性能
performance.timing 包含延迟相关的性能信息
performance.memory 包含内存信息,是Chrome中添加的一个非标准扩展,在使用时需要注意

  1. window.onload = function(){
  2. setTimeout(()=>{
  3. let t = performance.timing,
  4. m = performance.memory
  5. console.table({
  6. 'DNS查询耗时': (t.domainLookupEnd - t.domainLookupStart).toFixed(0),
  7. 'TCP链接耗时': (t.connectEnd - t.connectStart).toFixed(0),
  8. 'request请求耗时': (t.responseEnd - t.responseStart).toFixed(0),
  9. '解析dom树耗时': (t.domComplete - t.domInteractive).toFixed(0),
  10. '白屏时间': (t.responseStart - t.navigationStart).toFixed(0),
  11. 'domready时间': (t.domContentLoadedEventEnd - t.navigationStart).toFixed(0),
  12. 'onload时间': (t.loadEventEnd - t.navigationStart).toFixed(0),
  13. 'js内存使用占比': m ? (m.usedJSHeapSize / m.totalJSHeapSize * 100).toFixed(2) + '%' : undefined
  14. })
  15. })
  16. }