开发用到的js封装方法(20种)

下面是针对这个主题的完整攻略:

简介

在开发过程中,常常会使用到一些封装好的 JavaScript 方法,可以提高代码复用性、简化开发流程。本文总结了开发常用的 20 种 JavaScript 封装方法,希望能对大家有所帮助。

1. 数组操作

1.1. 将数组转换为对象

function arrayToObject(arr) {
  return arr.reduce((obj, item) => {
    obj[item.id] = item;
    return obj;
  }, {});
}

示例:

const arr = [
  { id: 1, name: 'apple' },
  { id: 2, name: 'banana' },
  { id: 3, name: 'orange' },
];
const obj = arrayToObject(arr);
// { "1": { id: 1, name: 'apple' }, "2": { id: 2, name: 'banana' }, "3": { id: 3, name: 'orange' } }

1.2. 数组去重

function uniqueArray(arr) {
  return [...new Set(arr)];
}

示例:

const arr = [1, 2, 3, 2, 1, 4, 5, 4];
const uniqueArr = uniqueArray(arr);
// [1, 2, 3, 4, 5]

1.3. 求数组最大值/最小值

function maxFromArray(arr) {
  return Math.max(...arr);
}

function minFromArray(arr) {
  return Math.min(...arr);
}

示例:

const arr = [1, 2, 3, 4, 5];
const max = maxFromArray(arr);
const min = minFromArray(arr);
// max: 5, min: 1

1.4. 数组扁平化

function flatten(arr) {
  return [].concat(...arr.map(item => Array.isArray(item) ? flatten(item) : item));
}

示例:

const arr = [1, [2, [3, [4, 5]]], 6];
const flatArr = flatten(arr);
// [1, 2, 3, 4, 5, 6]

2. 对象操作

2.1. 合并多个对象

function mergeObject(...objs) {
  return Object.assign({}, ...objs);
}

示例:

const obj1 = { a: 1 };
const obj2 = { b: 2 };
const obj3 = { c: 3 };
const mergedObj = mergeObject(obj1, obj2, obj3);
// { a: 1, b: 2, c: 3 }

2.2. 深拷贝对象

function deepClone(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  let clone = {};
  if (Array.isArray(obj)) {
    clone = [];
  }
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      clone[key] = deepClone(obj[key]);
    }
  }
  return clone;
}

示例:

const obj = {
  a: 1,
  b: {
    c: [2, 3, 4],
    d: 'hello'
  }
};
const clone = deepClone(obj);

2.3. 从对象中删除属性

function omit(obj, keys) {
  const newObj = {...obj};
  keys.forEach(key => delete newObj[key]);
  return newObj;
}

示例:

const obj = {
  a: 1,
  b: 2,
  c: 3,
  d: 4
};
const newObj = omit(obj, ['a', 'd']);
// { b: 2, c: 3 }

3. 字符串操作

3.1. 字符串翻转

function reverseString(str) {
  return str.split('').reverse().join('');
}

示例:

const str = 'hello world';
const reversedStr = reverseString(str);
// 'dlrow olleh'

3.2. 首字母大写

function capitalize(str) {
  return str[0].toUpperCase() + str.slice(1);
}

示例:

const str = 'hello world';
const capitalizedStr = capitalize(str);
// 'Hello world'

3.3. 清除空格

function trim(str) {
  return str.replace(/^\s+|\s+$/g, '');
}

示例:

const str = '   hello world   ';
const trimmedStr = trim(str);
// 'hello world'

4. 其他常用方法

4.1. 等待一段时间后执行函数

function delay(fn, wait, ...args) {
  setTimeout(fn.bind(null, ...args), wait);
}

示例:

function sayHello(name) {
  console.log(`Hello, ${name}!`);
}
delay(sayHello, 1000, 'Alice'); // 1 秒后输出 "Hello, Alice!"

4.2. 防抖函数

function debounce(fn, wait) {
  let timer;
  return function(...args) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, wait);
  };
}

示例:

function sayHello() {
  console.log('Hello, world!');
}
const debouncedSayHello = debounce(sayHello, 1000);
window.addEventListener('scroll', debouncedSayHello);
// 当用户滚动网页时,函数将最多每秒执行一次

4.3. 节流函数

function throttle(fn, wait) {
  let canRun = true;
  return function() {
    if (!canRun) return;
    canRun = false;
    setTimeout(() => {
      fn.apply(this, arguments);
      canRun = true;
    }, wait);
  };
}

示例:

function sayHello() {
  console.log('Hello, world!');
}
const throttledSayHello = throttle(sayHello, 1000);
window.addEventListener('scroll', throttledSayHello);
// 当用户滚动网页时,函数将最多每秒执行一次

以上就是本文总结的 20 种 JavaScript 封装方法,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:开发用到的js封装方法(20种) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Javascript 八进制转义字符(8进制)

    Javascript 八进制转义字符是一种用于表示ASCII码表中特殊字符的编码方式。其使用八进制数来表示对应的ASCII码。在Javascript中,八进制转义字符的格式为”\oxx”,其中xx为两个八进制数字。下面是Javascript中常用的八进制转义字符及其对应的ASCII码: 八进制转义字符 ASCII码 \000 NUL \011 HT \012…

    JavaScript 2023年5月19日
    00
  • JavaScript 对象字面量讲解

    下面是关于JavaScript对象字面量的全面讲解: JavaScript 对象字面量讲解 JavaScript 对象是一种复合数据类型,可以包含键值对,并且可以使用点语法进行访问。对象通常用于封装相关的数据和功能,并将它们组织在一起。 对象字面量是创建 JavaScript 对象最常用的方法之一。对象字面量是使用花括号({})定义对象,每个键值对之间使用冒…

    JavaScript 2023年5月27日
    00
  • URL地址中的#符号使用说明

    当我们访问网页时,常常会注意到 URL 地址中包含 # 符号。这个 # 符号在 URL 中有什么作用呢?下面我将详细讲解 “URL地址中的#符号使用说明”,希望能对大家有所帮助。 什么是 URL? 首先让我们来了解一下 URL 是什么。URL(Uniform Resource Locator),中文称统一资源定位符,是互联网上每个文件以及其他资源的唯一地址。…

    JavaScript 2023年6月11日
    00
  • JS实现字符串转日期并比较大小实例分析

    当我们需要比较两个日期的大小时,通常需要将字符串类型的日期转换为JavaScript中的Date对象,然后使用比较运算符进行比较。下面是JS实现字符串转日期并比较大小的完整攻略。 1. 将字符串类型的日期转换为Date对象 可以使用Date对象的构造函数并传入字符串类型的日期来创建一个Date对象。 var dateString = "2022-0…

    JavaScript 2023年5月27日
    00
  • js实现拖拽 闭包函数详细介绍

    JavaScript实现拖拽 闭包函数详细介绍 在网页开发中,经常会遇到需要通过鼠标拖拽来实现一些操作的需求,如拖拽图片、调整界面尺寸等。下面我们以一个实现拖拽的例子来介绍如何使用JavaScript实现拖拽功能,并介绍闭包函数的概念和应用。 实现拖拽的思路 当鼠标按下时,记录下鼠标的位置和拖拽元素的位置。 当鼠标移动时,根据鼠标移动的距离来更新拖拽元素的位…

    JavaScript 2023年6月10日
    00
  • 正则表达式模式匹配的String方法

    正则表达式模式匹配是一种常见的字符串处理方式,可以通过String类中的方法进行实现。在Java中,使用正则表达式通过匹配字符串来实现字符串处理和分析,常用的方法包括matches()、split()、replaceAll()等。 在Java中,String类提供了matches()方法用于判断某个字符串是否与指定的正则表达式匹配。这个方法返回一个布尔值,如…

    JavaScript 2023年6月10日
    00
  • 深入了解JavaScript的逻辑运算符(与、或)

    深入了解 JavaScript 的逻辑运算符(与、或) JavaScript 中的逻辑运算符有两种:与(&&)和或(||)。通常使用这两个运算符会返回 true 或 false 值,用于判断条件语句的真假。这里将对这两种运算符进行更加深入的讲解,包括它们的原理、使用场景、实际应用等。 1. 与(&&)运算符 1.1. 原理 与…

    JavaScript 2023年5月28日
    00
  • 使用JS判断页面是首次被加载还是刷新

    使用JS判断页面是首次被加载还是刷新,可以使用sessionStorage来进行判断,具体方法如下: 监听load事件,在事件处理函数中,判断sessionStorage是否存在对应的键值对。如果存在,说明页面是刷新后再次加载,反之则是首次加载。 示例代码: window.addEventListener(‘load’, function() { var i…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部