当前位置:首页 > JavaScript

js链式函数实现

2026-03-16 04:11:13JavaScript

js链式函数实现

链式调用的概念

链式调用(Method Chaining)是一种编程模式,允许在同一个对象上连续调用多个方法。这种模式通过在每个方法中返回对象本身(this)实现,常见于 jQuery、Lodash 等库中。

js链式函数实现

实现链式调用的核心

  1. 返回 this:每个方法执行后返回当前对象实例,使得后续方法可以继续调用。
  2. 支持链式的方法:需确保方法不返回其他值(如 undefined),否则链式调用会中断。

基础实现示例

class Calculator {
  constructor(value = 0) {
    this.value = value;
  }

  add(num) {
    this.value += num;
    return this; // 返回this以实现链式
  }

  subtract(num) {
    this.value -= num;
    return this;
  }

  multiply(num) {
    this.value *= num;
    return this;
  }

  getResult() {
    return this.value; // 终结方法,不返回this
  }
}

// 使用示例
const result = new Calculator(10)
  .add(5)
  .subtract(3)
  .multiply(2)
  .getResult(); // 输出: 24

高级应用:条件链式

通过返回新实例而非修改原对象,可实现不可变链式:

class ImmutableCalculator {
  constructor(value = 0) {
    this.value = value;
  }

  add(num) {
    return new ImmutableCalculator(this.value + num);
  }

  getResult() {
    return this.value;
  }
}

const calc = new ImmutableCalculator(10);
const newCalc = calc.add(5); // 返回新实例
console.log(calc.getResult()); // 10 (原对象未变)
console.log(newCalc.getResult()); // 15

注意事项

  • 终结方法:如 getResult() 不应返回 this,否则链式无法终止。
  • 性能考虑:频繁创建新实例(不可变模式)可能影响性能。
  • 错误处理:链式中若某步出错,需通过 try-catch 或返回错误对象处理。

实际应用场景

  1. DOM 操作:如 jQuery 的 $('div').addClass('active').hide()
  2. 数据处理:如 Lodash 的 _.chain([1,2,3]).map(n => n*2).sum().value()
  3. Builder 模式:构造复杂对象时逐步设置属性。

标签: 链式函数
分享给朋友:

相关文章

jquery函数

jquery函数

jQuery 函数概述 jQuery 是一个快速、简洁的 JavaScript 库,通过封装原生 JavaScript 功能,简化 DOM 操作、事件处理、动画和 AJAX 等任务。其核心函数 $()…

react如何使用函数

react如何使用函数

使用函数组件的基本语法 在React中,函数组件是通过JavaScript函数定义的组件。函数接收props作为参数,并返回React元素。 function Welcome(props) {…

vue防抖函数实现

vue防抖函数实现

防抖函数原理 防抖(Debounce)是一种限制函数频繁调用的技术,在事件被触发后延迟执行,若在延迟时间内再次触发,则重新计时。适用于输入框搜索、窗口大小调整等场景。 Vue 中实现防抖的三种方式…

vue中实现节流函数

vue中实现节流函数

使用 Lodash 的 _.throttle 方法 安装 Lodash 并导入 throttle 方法: npm install lodash 在 Vue 组件中使用: import { thro…

react箭头函数如何传参

react箭头函数如何传参

箭头函数传参基础语法 箭头函数通过括号内的参数列表接收参数,单参数时可省略括号。例如: const greet = name => `Hello, ${name}!`; console.log…

react如何控制函数组件更新

react如何控制函数组件更新

控制函数组件更新的方法 在React中,函数组件的更新通常由状态(state)或属性(props)的变化触发。以下是几种常见的控制函数组件更新的方法: 使用React.memo进行浅比较 React…