当前位置:首页 > JavaScript

js 实现before

2026-02-01 22:47:58JavaScript

实现 before 方法

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

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

使用示例:

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 上下文正确传递。

js 实现before

标签: jsbefore
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…