当前位置:首页 > JavaScript

js实现链式

2026-02-01 16:55:02JavaScript

链式调用的实现原理

链式调用(Method Chaining)是JavaScript中一种常见的编程模式,允许在单个对象上连续调用多个方法。核心原理是每个方法执行后返回对象本身(this),使得后续方法可以继续在同一个对象上调用。

js实现链式

基本实现方式

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;
  }

  divide(num) {
    this.value /= num;
    return this;
  }
}

// 使用示例
const result = new Calculator(10)
  .add(5)
  .subtract(3)
  .multiply(2)
  .divide(4).value; // 结果为6

函数式链式调用

对于非面向对象的情况,可以使用闭包实现链式调用:

js实现链式

function createChain() {
  let value = 0;

  const chain = {
    add(num) {
      value += num;
      return this;
    },
    getValue() {
      return value;
    }
  };

  return chain;
}

createChain().add(5).add(3).getValue(); // 8

jQuery风格的链式调用

DOM操作库常用这种模式:

const $ = (selector) => {
  const elements = document.querySelectorAll(selector);

  return {
    css(prop, value) {
      elements.forEach(el => el.style[prop] = value);
      return this;
    },
    addClass(className) {
      elements.forEach(el => el.classList.add(className));
      return this;
    }
  };
};

$('div').css('color', 'red').addClass('active');

异步链式调用

结合Promise实现异步链式:

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

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

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

new AsyncChain(10)
  .then(x => x * 2)
  .then(console.log); // 20

注意事项

  • 确保每个链式方法都返回this或新的链式对象
  • 避免在链式方法中返回undefined
  • 对于有状态的操作,注意方法调用的顺序影响结果
  • 考虑添加终结方法(如jQuery的.end())来结束链式调用

链式调用能显著提高代码可读性,特别适合构建流畅接口(Fluent Interface)。但过度使用可能导致调试困难,需要权衡使用场景。

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

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 fun…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…