当前位置:首页 > JavaScript

js 实现before

2026-02-01 22:47:58JavaScript

实现 before 方法

在 JavaScript 中,可以通过扩展 Function.prototype 来实现一个 before 方法,该方法允许在目标函数执行前插入一个前置函数。以下是实现方式:

js 实现before

Function.prototype.before = function(beforeFn) {
    const originalFn = this;
    return function(...args) {
        beforeFn.apply(this, args);
        return originalFn.apply(this, args);
    };
};

使用示例:

js 实现before

function logHello() {
    console.log('Hello');
}

function logWorld() {
    console.log('World');
}

const logHelloBeforeWorld = logWorld.before(logHello);
logHelloBeforeWorld(); // 输出: Hello World

实现 before 高阶函数

如果不希望污染原型链,可以通过高阶函数实现独立的 before 方法:

function before(beforeFn, originalFn) {
    return function(...args) {
        beforeFn.apply(this, args);
        return originalFn.apply(this, args);
    };
}

使用示例:

function logName(name) {
    console.log(`Name: ${name}`);
}

function validateName(name) {
    if (!name) throw new Error('Name is required');
}

const logValidName = before(validateName, logName);
logValidName('Alice'); // 输出: Name: Alice
logValidName(''); // 抛出错误: Name is required

注意事项

  • before 方法会确保前置函数先执行,但不会修改原函数的逻辑。
  • 如果前置函数抛出异常,原函数不会执行。
  • 可以通过 applycall 确保 this 上下文正确传递。

标签: jsbefore
分享给朋友:

相关文章

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现vue路由

js实现vue路由

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

js实现路由

js实现路由

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

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…