Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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 将新函数添加到window.event say';stopPropagationAndPreventDefault';_Javascript_Jquery - Fatal编程技术网

Javascript 将新函数添加到window.event say';stopPropagationAndPreventDefault';

Javascript 将新函数添加到window.event say';stopPropagationAndPreventDefault';,javascript,jquery,Javascript,Jquery,要在我使用的任何单击处理程序上停止默认操作和事件传播,请执行以下操作: function something(e) { if (!e) var e = window.event; e.cancelBubble = true; if (e.stopPropagation) { e.stopPropagation(); e.preventDefault(); } } 我想知道这是否可以优化为: function somethingne

要在我使用的任何单击处理程序上停止默认操作和事件传播,请执行以下操作:

function something(e) {
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
}
我想知道这是否可以优化为:

function somethingnew(e) {
    e.stopPropagationAndPreventDefault()
}

哪个实习生执行了某件事的逻辑。

我不建议这样做,但可以通过修改事件对象的原型来完成。因此,可以在事件实例上直接调用函数
stopPropagationAndPreventDefault

Event.prototype.stopPropagationAndPreventDefault = function(e) {
  if (!e) var e = window.event;
  e.cancelBubble = true;
  if (e.stopPropagation) {
      e.stopPropagation();
      e.preventDefault();
  }
};
请参见下面的代码段:

Event.prototype.stopPropagationAndPreventDefault=函数(e){
警报(“调用的函数”);
如果(!e)var e=window.event;
e、 取消气泡=真;
如果(如停止播放){
e、 停止传播();
e、 预防默认值();
}
};
var btn=document.querySelector(“#btn”);
btn.addEventListener(“单击”,clickHandler);
函数clickHandler(e){
e、 StopRopAgationAndPreventDefault();
}

单击我
如果不推荐,可能会显示(也)一个替代方案?对于他们正在尝试做的事情,我只能想到一种方法,即修改原型。你还有其他想法吗?也许是给
事件
包装一下?@Julian我不知道你说的是什么意思。你能补充一个答案吗?谢谢。但好奇的是,为什么不推荐呢?