Javascript 如何覆盖addEventListener函数?
我想从窗口覆盖addEventListener函数。 我尝试了以下代码:Javascript 如何覆盖addEventListener函数?,javascript,Javascript,我想从窗口覆盖addEventListener函数。 我尝试了以下代码: window.__proto__.addEventListener_ = window.__proto__.addEventListener; window.__proto__.addEventListener = function(...a){ console.log(...a); this.addEventListener_(...a); } 但是,当我添加一个新的侦听器时,它开始在控制台中滥发事件类
window.__proto__.addEventListener_ = window.__proto__.addEventListener;
window.__proto__.addEventListener = function(...a){
console.log(...a);
this.addEventListener_(...a);
}
但是,当我添加一个新的侦听器时,它开始在控制台中滥发事件类型。如何仅触发一次?首先,使用
Window.prototype
而不是Window.\uuuuu proto\uuu
Window.prototype.addEventListener=Window.prototype.addEventListener;
Window.prototype.addEventListener=函数(…a){
console.log(…a);
本附录为附录1(…a);
}
而且,更好的是,您可以使用块范围变量来存储原始的addEventListener
,而不是向窗口添加属性并污染全局范围,如下所示:
{
让addEventListener_u2;=Window.prototype.addEventListener;
Window.prototype.addEventListener=函数(…a){
console.log(…a);
addEventListener调用(此,…a);
}
}
请检查此选项是否有用