我想围绕 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/