当前位置:首页 > 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创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现图片放大缩小

js实现图片放大缩小

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

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js画图实现

js画图实现

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

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…