javascript - 重写 JQuery 函数(日志装饰器)

标签 javascript jquery

我想围绕 jQuery 函数创建一个日志装饰器,但它只被调用一次(在初始化时)。如何修复它?请看一下代码。

function makeLogging(f) {

  function wrapper(...rest) {
      console.log(f.name);
      console.log(rest);
      return f.apply(this, rest);
    }

  return wrapper;
}

const task = $('.task');

task.on = makeLogging(task.on);

task.on('click', () => console.log('hi'));

点击事件不会显示有关被调用函数的消息。

最佳答案

如果我明白了你想要实现的目标,你就做得有点错误了。对于您所描述的功能,请尝试以下操作:

task.on('click', makeLogging(() => console.log('hi')));

在您的原始代码中,您包装了 on() 函数的功能,但此 on() 函数并未作为事件处理程序调用 - 它仅安装实际事件处理程序。这就是为什么在安装处理程序期间仅调用一次日志记录。

关于javascript - 重写 JQuery 函数(日志装饰器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746225/

相关文章:

c# - ajax 中的 get 请求到 Controller 操作不起作用?

javascript - 如何使 HTML 列表可复制为 Markdown

javascript - 带悬垂的jquery滑动抽屉

javascript - 检测是否从代理或目标调用代理 getter

javascript - 如何触发childNode点击事件

javascript - 编码不当的 JQuery : naming dependancies

javascript - 我可以以某种方式以编程方式访问当前作用域的激活对象吗?

javascript - 如何验证 JavaScript 对象中的方法是否遵循特定接口(interface)?

jquery - nivo slider 问题

javascript - 如何将最后一类元素复制到 jQuery 中的另一个元素?