javascript删除处理程序中的事件,

javascript删除处理程序中的事件,,javascript,events,mousemove,Javascript,Events,Mousemove,请看一看 我想知道,是否可以从中替换“func” document.removeEventListener("mousemove",func); 对于其他一些关键字,我想像下面的代码那样编写它 (function(){ document.addEventListener("mousemove",function(e){ document.removeEventListener("mousemove",***); }); }()); 工作代码 我们有两个不同的选项,第一个选项是

请看一看

我想知道,是否可以从中替换“func”

document.removeEventListener("mousemove",func);
对于其他一些关键字,我想像下面的代码那样编写它

(function(){
  document.addEventListener("mousemove",function(e){
    document.removeEventListener("mousemove",***);
  });
}());
工作代码


我们有两个不同的选项,第一个选项是使用
参数。被调用方
将在不久的将来被弃用,使用
参数。被调用方
我们可以访问正在执行的当前函数,因此您可以这样做:

(function(){
   document.addEventListener("mousemove",function mylistener(e){
      document.removeEventListener("mousemove", arguments.callee);
   });
}());
var myfunc = function yourfunc(){
    //yourfunc is accessible
};
//but here yourfunc is not accessible
警告:第5版ECMAScript(ES5)禁止使用 参数。被调用方()处于严格模式

有关更多信息,请阅读:

如您所见,除了在不久的将来被弃用之外,您不能在
严格模式下使用
参数.callee
,这会给我们带来一些麻烦

我们有一个新的选择,它可以帮助我们不使用
参数。好吧,假设我们有这样一个函数:

(function(){
   document.addEventListener("mousemove",function mylistener(e){
      document.removeEventListener("mousemove", arguments.callee);
   });
}());
var myfunc = function yourfunc(){
    //yourfunc is accessible
};
//but here yourfunc is not accessible
在这段代码中,我们只能在函数体中使用
yourfunc
,但在该上下文中,我们只有
myfunc
。听起来我们在函数的作用域中有一个私有指针,它是可访问的,可以用来代替
参数

这是一个新的替代方案,也可以在
严格模式下使用,因此在您的代码中,您可以这样做:

(function(){
   document.addEventListener("mousemove",function mylistener(e){
      document.removeEventListener("mousemove", mylistener);
   });
}());