站三界导航
首页 JS代码js封装常用的工具方法大全

js封装常用的工具方法大全

  • JS代码
  • 来源:站三界导航
  • 90阅读
  • 2023-05-02

1.判断变量是否是空值(null、undefined、空字符串):


function isEmpty(variable) {
  return variable === null || variable === undefined || variable === '';
}

2.判断变量的类型:

function getType(variable) {
  return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
} 
3.防抖函数(在函数触发一段时间后再执行,若在此期间再次触发,则重新计时):

function debounce(fn, delay) {
  let timer;
  return function (...args) {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}
4.节流函数(设定一段时间间隔,在此期间内函数只执行一次):

function throttle(fn, delay) {
  let timer;
  return function (...args) {
    if (!timer) {
      timer = setTimeout(() => {
        fn.apply(this, args);
        timer = null;
      }, delay);
    }
  };
}
5.字符串截取(可保留省略号):

function truncate(str, len, omission = '...') {
  if (str.length <= len) return str;
  return str.slice(0, len - omission.length) + omission;
}
数组去重:

function unique(array) {
  const result = [];
  for (let i = 0; i < array.length; i++) {
    if (result.indexOf(array[i]) === -1) result.push(array[i]);
  }
  return result;
}
7.数组扁平化:

function flatten(array) {
  return array.reduce((prev, curr) => {
    return prev.concat(Array.isArray(curr) ? flatten(curr) : curr);
  }, []);
}
8.对象属性排序:

function sortObjectProps(obj) {
  const keys = Object.keys(obj).sort((a, b) => a.localeCompare(b));
  const result = {};
  keys.forEach(key => (result[key] = obj[key]));
  return result;
}
9.获取浏览器滚动条的宽度:

function getScrollbarWidth() {
  const outer = document.createElement('div');
  outer.style.visibility = 'hidden';
  outer.style.overflow = 'scroll';
  outer.style.msOverflowStyle = 'scrollbar'; 
  document.body.appendChild(outer);
  const inner = document.createElement('div');
  outer.appendChild(inner);
  const scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);
  outer.parentNode.removeChild(outer);
  return scrollbarWidth;
}
10.深拷贝对象:

function deepClone(obj) {
  const type = getType(obj);
  if (type === 'object') {
    const cloneObj = {};
    for (let key in obj) {
      cloneObj[key] = deepClone(obj[key]);
    }
    return cloneObj;
  } else if (type === 'array') {
    const cloneArr = [];
    obj.forEach(item => {
      cloneArr.push(deepClone(item));
    });
    return cloneArr;
  } else {
    return obj;
  }
}
以上仅是一些常用的工具方法封装,实现方式会因人而异,欢迎参考修改。


本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/41715.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。