为什么我不能在addEventListener中调用类函数

马特

为什么我无法在run函数中返回element_id?如果我将脚本设置为let self = this; function(){ self.run() }

不起作用:

class clickin {
    constructor(element_id) {
      this.element = document.getElementById(element_id);
      this.element.addEventListener('click', this.run);
    }
    run() {
      alert('Element id: ' + element_id);
    }
}

作品:

   class clickin {
        constructor(element_id) {
          this.element = document.getElementById(element_id);
          let self = this;

          this.element.addEventListener('click', function(){
            self.run();
          });
        }
        run() {
          alert('Element id: ' + element_id);
        }
    }
技术

使用addEventListener对象,您可以设置一个回调函数,在触发事件时将调用该函数。因此,它在与构造函数不同的上下文中运行。在这种情况下,“ caller(this)”对象将发生更改,因此,您上面提到的this.run将不起作用。但是,当您将“ clickin”类对象分配给变量“ self”时,您可以运行,因为self在回调函数中作为闭包可用,并且在执行事件处理程序时,它可以访问该“ clickin”对象。您可能需要更深入地研究以下主题,以便更好地理解。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this

https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能在 React 中调用这个函数?

来自分类Dev

为什么我不能在我的回调中调用我的 vue 组件的函数

来自分类Dev

为什么我不能在 python 的类中调用我的方法?

来自分类Dev

为什么我不能在 Javascript 中的同一个类函数中调用一个类函数?

来自分类Dev

为什么我不能在另一个类中调用静态方法?

来自分类Dev

为什么我不能在扩展通用特征的类中调用带有参数“ this”的方法?

来自分类Dev

为什么我不能在settimeout / setinterval中多次调用带有参数的函数

来自分类Dev

为什么我不能在 php 的 try 块中定义函数之前调用它

来自分类Dev

为什么我不能在 .spec.ts 中调用组件的函数?

来自分类Dev

为什么我不能在期望父类列表的函数中引用子类列表?

来自分类Dev

为什么我不能在 operator<< 中访问 Box 类的私有函数?

来自分类Dev

为什么不能在函数中调用全局变量?

来自分类Dev

为什么不能在jquery中递归调用函数?

来自分类Dev

为什么我不能在回调中调用useRef?

来自分类Dev

为什么我不能在Python中更改类的属性

来自分类Dev

为什么我不能在熊猫函数中应用shift?

来自分类Dev

为什么我的函数不能在 python 代码中执行?

来自分类Dev

如果函数是对象,为什么我不能在 JS 中的另一个函数内部调用函数?

来自分类Dev

为什么不能在类范围内推导我的类静态自动函数的类型?

来自分类Dev

为什么我不能在返回 const 的 bool 函数中为类成员变量赋值?C++

来自分类Dev

为什么我不能从事件侦听器调用方法,而不能在类中的其他地方调用方法?

来自分类Dev

为什么我不能从Python类中调用方法?

来自分类Dev

为什么我不能调用我的函数?

来自分类Dev

为什么我不能在我的播放器功能中调用我的敌人边界?

来自分类Dev

因为我不能在顶层运行 await,我必须把它放到一个异步函数中——为什么我可以直接调用那个异步函数?

来自分类Dev

为什么我不能在输入的onChange上调用函数?HTML / jQuery

来自分类Dev

为什么我不能在 Python 中使用变量作为参数来调用这个函数?

来自分类Dev

为什么我不能在类中使用参数构造函数?

来自分类Dev

为什么我不能在类定义中实例化同一类的对象

Related 相关文章

  1. 1

    为什么我不能在 React 中调用这个函数?

  2. 2

    为什么我不能在我的回调中调用我的 vue 组件的函数

  3. 3

    为什么我不能在 python 的类中调用我的方法?

  4. 4

    为什么我不能在 Javascript 中的同一个类函数中调用一个类函数?

  5. 5

    为什么我不能在另一个类中调用静态方法?

  6. 6

    为什么我不能在扩展通用特征的类中调用带有参数“ this”的方法?

  7. 7

    为什么我不能在settimeout / setinterval中多次调用带有参数的函数

  8. 8

    为什么我不能在 php 的 try 块中定义函数之前调用它

  9. 9

    为什么我不能在 .spec.ts 中调用组件的函数?

  10. 10

    为什么我不能在期望父类列表的函数中引用子类列表?

  11. 11

    为什么我不能在 operator<< 中访问 Box 类的私有函数?

  12. 12

    为什么不能在函数中调用全局变量?

  13. 13

    为什么不能在jquery中递归调用函数?

  14. 14

    为什么我不能在回调中调用useRef?

  15. 15

    为什么我不能在Python中更改类的属性

  16. 16

    为什么我不能在熊猫函数中应用shift?

  17. 17

    为什么我的函数不能在 python 代码中执行?

  18. 18

    如果函数是对象,为什么我不能在 JS 中的另一个函数内部调用函数?

  19. 19

    为什么不能在类范围内推导我的类静态自动函数的类型?

  20. 20

    为什么我不能在返回 const 的 bool 函数中为类成员变量赋值?C++

  21. 21

    为什么我不能从事件侦听器调用方法,而不能在类中的其他地方调用方法?

  22. 22

    为什么我不能从Python类中调用方法?

  23. 23

    为什么我不能调用我的函数?

  24. 24

    为什么我不能在我的播放器功能中调用我的敌人边界?

  25. 25

    因为我不能在顶层运行 await,我必须把它放到一个异步函数中——为什么我可以直接调用那个异步函数?

  26. 26

    为什么我不能在输入的onChange上调用函数?HTML / jQuery

  27. 27

    为什么我不能在 Python 中使用变量作为参数来调用这个函数?

  28. 28

    为什么我不能在类中使用参数构造函数?

  29. 29

    为什么我不能在类定义中实例化同一类的对象

热门标签

归档