Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何覆盖addEventListener函数?_Javascript - Fatal编程技术网

Javascript 如何覆盖addEventListener函数?

Javascript 如何覆盖addEventListener函数?,javascript,Javascript,我想从窗口覆盖addEventListener函数。 我尝试了以下代码: window.__proto__.addEventListener_ = window.__proto__.addEventListener; window.__proto__.addEventListener = function(...a){ console.log(...a); this.addEventListener_(...a); } 但是,当我添加一个新的侦听器时,它开始在控制台中滥发事件类

我想从窗口覆盖addEventListener函数。 我尝试了以下代码:

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);
}
}
请检查此选项是否有用