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

yizhihongxing

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

简介

在开发过程中,常常会使用到一些封装好的 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日

相关文章

  • WebWorker 封装 JavaScript 沙箱详情

    WebWorker是一种浏览器提供的JavaScript语言的多线程解决方案,它允许在后台运行长时间运算脚本而不会干扰用户界面,并且可以通过WebWorker进行线程之间的通信。 但是,在实际使用过程中,由于WebWorker并没有提供JS沙箱环境,如果在WebWorker中运行的JS脚本存在恶意代码,将会对用户数据造成威胁。 因此,我们需要在WebWork…

    JavaScript 2023年5月28日
    00
  • JavaScript Window 打开新窗口(window.location.href、window.open、window.showModalDialog)

    JavaScript Window 打开新窗口 有3种常用的JavaScript方法可以打开一个新窗口,它们分别是window.location.href、window.open和window.showModalDialog。接下来,我们将详细讲解它们的使用方法和区别。 window.location.href window.location.href 可以…

    JavaScript 2023年6月11日
    00
  • AngularJs expression详解及简单示例

    下面是详细的“AngularJs expression详解及简单示例”的攻略。 什么是AngularJS表达式 AngularJS表达式是一个AngularJS模板内的小片段,用于绑定到AngularJS编译器$compile的作用域属性。表达式以{{ expression }}的形式出现在双括号中,它们绑定到当前作用域上的JavaScript变量。通俗点说…

    JavaScript 2023年6月11日
    00
  • JavaScript数组、json对象、eval()函数用法实例分析

    接下来我将详细讲解“JavaScript数组、JSON对象、eval()函数用法实例分析”的完整攻略。 一、JavaScript数组 1.1 定义数组 JavaScript数组是一种数据类型,用于存储多个数据,可以是数值、字符串、对象等。定义一个数组可以使用以下语法: var myArray = new Array(); // 使用 new 操作符创建一个空…

    JavaScript 2023年5月27日
    00
  • JavaScript 匿名函数(anonymous function)与闭包(closure)

    JavaScript 匿名函数(anonymous function)与闭包(closure)是 JavaScript 语言中比较常用且常误解的概念。在本文中,我们将详细介绍匿名函数与闭包的概念、用法及其注意事项。 匿名函数 概念 匿名函数是指没有函数名的函数。在 JavaScript 中,我们通常通过函数表达式来定义匿名函数。如下所示: const add…

    JavaScript 2023年5月27日
    00
  • JS实现可恢复的文件上传示例详解

    下面是关于JS实现可恢复文件上传的详细攻略。 标题 什么是可恢复文件上传? 可恢复文件上传是指,当文件上传被中断或者失败时,重新连接服务器上传时,上传的过程能够从之前的进度恢复,并继续上传。这样可以节省时间和流量,提高用户体验。 如何实现可恢复文件上传 可恢复文件上传的实现需要前后端的配合,下面我会先讲述前端的实现方式。 文件分片及上传控制 将要上传的文件分…

    JavaScript 2023年5月27日
    00
  • JavaScript高级程序设计(第3版)学习笔记5 js语句

    JavaScript高级程序设计(第3版)是一本经典的JavaScript教材,本书是关于js语句的学习笔记,以下为完整攻略: 目录 条件语句 循环语句 跳转语句 try-catch语句 with语句 条件语句 条件语句是根据条件执行不同代码块的语句。 if语句 if语句的基本格式是: if (条件) { // 如果条件为真,则执行这里的代码 } 示例: i…

    JavaScript 2023年5月27日
    00
  • JS获取当前时间的实例代码(昨天、今天、明天)

    获取当前时间是JavaScript中比较基础的内容,可以通过Date对象的方法获取到当前的时间、日期等信息。对于“昨天、今天、明天”的需求,可以在获取当前时间的基础上,通过一些计算方法实现。 以下是获取当前时间及计算“昨天、今天、明天”的示例代码: 获取当前时间的实例代码 const now = new Date(); // 创建一个Date对象,获取当前时…

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