当前位置: 首页 > 面试题库 >

JavaScript中匿名函数上的removeEventListener

东郭骁
2023-03-14
问题内容

我有一个包含方法的对象。这些方法被放入匿名函数内部的对象中。看起来像这样:

var t = {};
window.document.addEventListener("keydown", function(e) {
    t.scroll = function(x, y) {
        window.scrollBy(x, y);
    };
    t.scrollTo = function(x, y) {
        window.scrollTo(x, y);
    };
});

(还有很多代码,但这足以显示问题)

现在,在某些情况下,我想停止事件监听器。因此,我试图做一个removeEventListener,但我不知道如何去做。我已经读过其他问题,无法在匿名函数上调用removeEventListener,但是在这种情况下也是如此吗?

我在匿名函数内部创建了一个t方法,因此我认为这是可能的。看起来像这样:

t.disable = function() {
    window.document.removeEventListener("keydown", this, false);
}

我为什么不能这样做?

还有其他(好的)方法吗?

奖金信息;这仅在Safari中有效,因此缺少IE支持。


问题答案:

我认为这是匿名函数的重点,它缺少名称或引用它的方法。

如果您是我,则只需创建一个命名函数,或将其放在变量中,以便对其进行引用。

var t = {};
var handler = function(e) {
    t.scroll = function(x, y) {
        window.scrollBy(x, y);
    };
    t.scrollTo = function(x, y) {
        window.scrollTo(x, y);
    };
};
window.document.addEventListener("keydown", handler);

您可以通过以下方式将其删除

window.document.removeEventListener("keydown", handler);


 类似资料:
  • 本文向大家介绍什么是JavaScript中的匿名函数?,包括了什么是JavaScript中的匿名函数?的使用技巧和注意事项,需要的朋友参考一下 函数表达式与函数声明相似,并且具有与函数声明相同的语法。可以定义“命名”函数表达式(例如,在调用堆栈中可能使用表达式的名称)或“匿名”函数表达式。 匿名函数表达式的示例(未使用名称)- 可以使用引用该函数的变量名来调用此函数- 总之,匿名函数是未存储但与变

  • 本文向大家介绍JavaScript中匿名函数的递归调用,包括了JavaScript中匿名函数的递归调用的使用技巧和注意事项,需要的朋友参考一下 不管是什么编程语言,相信稍微写过几行代码的同学,对递归都不会陌生。 以一个简单的阶乘计算为例: 我们可以看出,递归就是在函数内部调用对自身的调用。 那么问题来了,我们知道在Javascript中,有一类函数叫做匿名函数,没有名称,怎么调用呢?当然你可以说,

  • 本文向大家介绍JavaScript中匿名、命名函数的性能测试,包括了JavaScript中匿名、命名函数的性能测试的使用技巧和注意事项,需要的朋友参考一下 我们经常通过匿名函数(Anonymous function)来写回调。 简单来讲匿名即没有名字的函数,一般都立即执行。但是它与命名函数(有名字的函数)的性能如何呢? 我们可以比较一下,我们随便找一台可以执行Shell命令的计算机来使用大量函数调

  • 本文向大家介绍Python中的匿名函数,包括了Python中的匿名函数的使用技巧和注意事项,需要的朋友参考一下 这些函数被称为匿名函数,因为它们不是通过使用def关键字以标准方式声明的。您可以使用lambda关键字创建小的匿名函数。 Lambda形式可以接受任意数量的参数,但仅以表达式形式返回一个值。它们不能包含命令或多个表达式。 匿名函数不能直接调用print,因为lambda需要一个表达式 L

  • 5.6. 匿名函数 拥有函数名的函数只能在包级语法块中被声明,通过函数字面量(function literal),我们可绕过这一限制,在任何表达式中表示一个函数值。函数字面量的语法和函数声明相似,区别在于func关键字后没有函数名。函数值字面量是一种表达式,它的值被成为匿名函数(anonymous function)。 函数字面量允许我们在使用函数时,再定义它。通过这种技巧,我们可以改写之前对st

  • 有没有想过定义一个很短的回调函数,但又不想用 def 的形式去写一个那么长的函数,那么有没有快捷方式呢? 答案是有的。 python 使用 lambda 来创建匿名函数,也就是不再使用 def 语句这样标准的形式定义一个函数。 匿名函数主要有以下特点: lambda 只是一个表达式,函数体比 def 简单很多。 lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封