当前位置:首页 > JavaScript

js实现链式

2026-04-06 09:50:30JavaScript

链式调用的实现原理

链式调用(Method Chaining)允许在一个对象上连续调用多个方法,无需重复引用对象。实现的核心在于每个方法返回对象本身(this)或其他可链式调用的对象。

基础实现示例

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

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

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

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

  getResult() {
    return this.value;
  }
}

// 链式调用
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);
  }

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

const calc1 = new ImmutableCalculator(10);
const calc2 = calc1.add(5).subtract(3);
console.log(calc1.value); // 10 (原对象未改变)
console.log(calc2.value); // 12

异步链式调用实现

结合Promise实现异步操作的链式调用:

js实现链式

class AsyncTask {
  constructor() {
    this.promise = Promise.resolve();
  }

  then(fn) {
    this.promise = this.promise.then(fn);
    return this;
  }

  catch(fn) {
    this.promise = this.promise.catch(fn);
    return this;
  }
}

new AsyncTask()
  .then(() => fetch('/api/data'))
  .then(res => res.json())
  .catch(console.error);

链式调用的注意事项

  • 中断处理:某些方法可能需要中断链式调用(如返回非this的值)
  • 性能影响:频繁创建新对象可能影响性能(如不可变模式)
  • 调试难度:过长的链式调用可能增加调试复杂度

常见应用场景

  1. jQuery的DOM操作:$('div').addClass('active').hide()
  2. 测试框架断言:expect(value).toBe(5).not.toBeNull()
  3. 构建器模式:new QueryBuilder().select().where().orderBy()

标签: 链式js
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…